[php] sort array

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Ik weet niet hoe ik een array kan sorteren:

code:
1
2
3
4
for($i=1;$i<($serverinfo["numplayers"]+1);$i++) {
$player[$i]['fragrate'] = $player[$i]['kills']+$player[$i]['kia'];
   echo $player[$i]['name']." = ".$player[$i]['fragrate']."<br>";
}


laatste lijn is voor debug.

Nou wil ik dus buiten dit loopje de array van alle fragrate waarden sorteren met Sort().
Alleen weet ik niet hoe dit moet. Dit heb ik geprobeerd, eerste en tweede poging:
code:
1
2
3
4
5
6
7
8
9
sort($i['fragrate']);
 $laagst=$i['fragrate'][0]; echo $laagst;
 $hoogst=$i['fragrate'][count($i['fragrate'])-1]; echo $hoogst; 
 reset($i['fragrate']);

sort($player['fragrate']);
 $laagst=$player['fragrate'][0]; echo $laagst;
 $hoogst=$player['fragrate'][count($player['fragrate'])-1]; echo $hoogst; 
 reset($player['fragrate']);


Errors respectievelijk:
Warning: Cannot use a scalar value as an array in C:\Program Files\Abyss Web Server\htdocs\index.php on line 227
Warning: sort() expects parameter 1 to be array, null given in C:\Program Files\Abyss Web Server\htdocs\index.php on line 227
Warning: Cannot use a scalar value as an array in C:\Program Files\Abyss Web Server\htdocs\index.php on line 230
Warning: reset(): Passed variable is not an array or object in C:\Program Files\Abyss Web Server\htdocs\index.php on line 230


Warning: sort() expects parameter 1 to be array, null given in C:\Program Files\Abyss Web Server\htdocs\index.php on line 227
Warning: reset(): Passed variable is not an array or object in C:\Program Files\Abyss Web Server\htdocs\index.php on line 230

[ Voor 9% gewijzigd door Verwijderd op 24-02-2005 19:19 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

array_sort()? :P Nevermind.

[ Voor 15% gewijzigd door NMe op 24-02-2005 19:26 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • klokop
  • Registratie: Juli 2001
  • Laatst online: 16-09 19:21

klokop

swiekie swoeng

http://php.net/usort misschien?
of http://php.net/multisort

[ Voor 35% gewijzigd door klokop op 24-02-2005 19:25 ]

"Passing silhouettes of strange illuminated mannequins"


Verwijderd

Maak een functie die twee users vergelijkt en gebruik usort.

Edit: Nou ik toch al te laat ben kan ik wel wat er bij schrijven.

Een array sorteren kan alleen bij simpele arrays op key of op value. Dus een array in de vorm van
code:
1
2
$bla[0]=3;
$bla[1]=2;

kan je sorteren. Wil je echter een ingewikkelder array sorteren, zoals
code:
1
2
$bla[0][fragrate]=3;
$bla[1][fragrate]=2;

Dan moet je zelf een functie maken die die twee vergelijkt:
code:
1
2
3
function vergelijk($a, $b) {
return $a[fragrate]-$b[fragrate];
}

En deze functie moet je dan meegeven aan usort. Bovenstaande functie is even uit mijn hoofd. Ik denk wel dat het werkt maar misschien moet je a en b omdraaien.

[ Voor 78% gewijzigd door Verwijderd op 24-02-2005 19:27 ]


Verwijderd

Topicstarter
Misschien kan ik het wat beter uitleggen:

Het is inderdaad zoals Sjord beschrijft een array met een stuk of 8 indexen, en elke index heeft zijn eigen waarde: de fragrate.

EDIT: laat maar :)

Ik ben veel te moeilijk aan het doen, die tweede array parameter fragrate hoeft er in principe niet bij omdat ik zoiezo al een extra array gemaakt heb om de broncode te beschermen.

dus los ik het gewoon als een normale array op:
$bla[0]=3;
$bla[1]=2;

bedankt!