Array sorteren op "Score" en dat in een variable stoppen.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robin van der Vliet

Robin van der Vliet

22/07/2010 21:54:19
Quote Anchor link
Ik heb nu een array ($user) die ik graag wil sorteren op de key "Score".
Dit is de array. ;)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Array
(
    [0] => SimpleXMLElement Object
        (
            [Username] => robin
            [ID] => 1
            [Score] => 3491
            [Died] => 13
        )

    [1] => SimpleXMLElement Object
        (
            [Username] => name
            [ID] => 418
            [Score] => 131
            [Died] => 914
        )
    [2] => SimpleXMLElement Object
        (
            [Username] => player
            [ID] => 852
            [Score] => 6174
            [Died] => 12
        )
)




maar ik wil dat die gesorteerd word op Score dus ik wil dat er dan dit weer uitkomt in de variable $user_desc

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Array
(
    [0] => SimpleXMLElement Object
        (
            [Username] => player
            [ID] => 852
            [Score] => 6174
            [Died] => 12
        )
    [1] => SimpleXMLElement Object
        (
            [Username] => robin
            [ID] => 1
            [Score] => 3491
            [Died] => 13
        )

    [2] => SimpleXMLElement Object
        (
            [Username] => name
            [ID] => 418
            [Score] => 131
            [Died] => 914
        )
)



en dan wil ik dat er dit uitkomt in de variable $user_asc

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Array
(
    [0] => SimpleXMLElement Object
        (
            [Username] => name
            [ID] => 418
            [Score] => 131
            [Died] => 914
        )
    [1 => SimpleXMLElement Object
        (
            [Username] => robin
            [ID] => 1
            [Score] => 3491
            [Died] => 13
        )
    [2] => SimpleXMLElement Object
        (
            [Username] => player
            [ID] => 852
            [Score] => 6174
            [Died] => 12
        )
)


Dus mijn vraag is hoe ik dit kan doen?
Ik heb al gezocht op internet maar ik kon nergens iets vinden.
Ik denk zelf dat ik dit met asort moet doen.
Gewijzigd op 23/07/2010 08:47:15 door Robin van der Vliet
 
PHP hulp

PHP hulp

26/04/2024 23:26:24
 
Noppes Homeland

Noppes Homeland

23/07/2010 09:01:26
 
Robin van der Vliet

Robin van der Vliet

23/07/2010 09:07:40
Quote Anchor link
Maar welk argument moet ik dan gebruiken voor hem te laten sorteren op score?

Ik denk zelf zo iets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

$user_desc
= array_multisort($user, "Score", SORT_NUMERIC, SORT_DESC)
$user_asc = array_multisort($user, "Score", SORT_NUMERIC, SORT_ASC)

?>
Gewijzigd op 23/07/2010 09:08:55 door Robin van der Vliet
 
Joren de Wit

Joren de Wit

23/07/2010 12:54:14
Quote Anchor link
Volgens mij ga je het niet redden met array_multisort, die functie is bedoeld om meerdere arrays te sorteren. Multidimensionale arrays worden ook als meerdere arrays (binnen een array) gezien en daarom als losstaand gesorteerd.

Je zou er zelf een functie voor kunnen schrijven die het sorteren voor je verzorgt?
 
Noppes Homeland

Noppes Homeland

23/07/2010 14:32:46
Quote Anchor link
Je kan het uitstekend redden met array_multisort, als je je best maar doet.

En ja je hebt gelijk als je bedoeld dat je het een en ander eerst een stukkie uitelkaar moet trekken.

Je moet beter naar de gegeven voorbeeld kijken...
 
An d

An d

25/07/2010 23:40:45
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?
//communicating with the parser, E_ALL: t-double-arrow-ja
   $a[0]['Simple']['Username']='robin';
   $a[0]['Simple']['ID']=1;
   $a[0]['Simple']['Score'] = 3491;
   $a[0]['Simple']['Died'] = 13;
        
    $a[1]['Simple']['Username'] = 'name';
    $a[1]['Simple']['ID'] = 418;
    $a[1]['Simple']['Score'] = 131;
    $a[1]['Simple']['Died'] = 914;
        
    $a[2]['Simple']['Username'] = 'player';
    $a[2]['Simple']['ID'] = 852;
    $a[2]['Simple']['Score'] = 6174;
    $a[2]['Simple']['Died'] = 12;
//expecting(-ja , na 'forech' dubbele data is verdacht: redundantie
//echo'<pre>';print_r($a);echo'</pre>';  

    $j11=0;$j21='Simple';  $j31='Username'; $j32='ID'; $j33='Score'; $j34='Died';
//function value_as_key($a){ we maken een result-table $r , global $r;
$i=0;
foreach($a as $k=>$v){
    echo$k.$v[$j21][$j31].$v[$j21][$j33].'<br>';
    $r[$i][0]=$a[$i]['Simple']['Score'];
    $r[$i][1]=$k; $i++;    }
echo'<pre>';print_r($r);echo'</pre>';
//return ;} //voor heel de array moet 1e sleutel.deel dynamisch: tellertje
//value_as_key($a);
    
//$user_desc=1; rsort:sorteert op waarde in omgekeerde v, kent nwe nrs als key toe

$rr=$r;rsort($rr);
    //echo'<pre>';print_r($rr);echo'</pre>';
    echo'simple aflopend desc<br>';
foreach($rr as $k=>$v){
    echo $j31.'. => .'.$a[$v[1]][$j21][$j31] .'';
     echo $j32.'. => .'.$a[$v[1]][$j21][$j32] .'';
    echo $j33.'. => .'.$a[$v[1]][$j21][$j33] .'<br>';}
//$user_asc=1;    
$rs=$r;sort($rs);
    //echo'<pre>';print_r($rs);echo'</pre>';
    echo'simple toenemend asc<br>';
foreach($rs as $k=>$v){
    echo $j31.'. => .'.$a[$v[1]][$j21][$j31] .'';
     echo $j32.'. => .'.$a[$v[1]][$j21][$j32] .'';
    echo $j33.'. => .'.$a[$v[1]][$j21][$j33] .'<br>';}
?>
 

26/07/2010 10:26:14
Quote Anchor link
Het zijn SimpleXMLElement Objecten dus dat betekend dat je de data uit een xml bestand o.i.d. hebt gehaald, dat betekend dus dat je dan al de data kan sorteren.
Ook moet het wel met wat prutswerk mogelijk zijn om het te doen met multisort, maar zo'n manier als all de leest zou ik niet doen.
 
Robin van der Vliet

Robin van der Vliet

26/07/2010 11:09:48
Quote Anchor link
Karl Karl op 26/07/2010 10:26:14:
...dat betekend dus dat je dan al de data kan sorteren....

En hoe?
 

26/07/2010 11:12:56
Quote Anchor link
Dat ligt er maar net aan hoe je de data ophaalt.
 
Robin van der Vliet

Robin van der Vliet

26/07/2010 11:16:27
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$xml
= simplexml_load_file("http://www.example.com/scores.xml");
?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.