login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Array['id'] Sorteren (Opgelost)

Offline Nrzonline - 06/06/2007 10:07 (laatste wijziging 06/06/2007 10:41)
Avatar van NrzonlinePHP ver gevorderde Hey SiMa Mensen,

Ik heb een array met het volgende: (ingekort)
  1. <?PHP
  2.  
  3. $aArray[0] = array ("item_id" => 22,
  4. "item_type" => "weapon",
  5. "item_level"=> 5);
  6. $aArray[1] = array ("item_id" => 35,
  7. "item_type" => "ring",
  8. "item_level"=> 2);
  9. $aArray[2] = array ("item_id" => 3,
  10. "item_type" => "quest",
  11. "item_level"=> 0);
  12.  
  13. ?>


Nu wil ik deze sorteren op $aArray['item_id']. Dit wil echter maar niet lukken, want hij blijft hem maar sorteren op ['item_type'].

Ik heb onlangs hetvolgende al geprobeerd, maar het mocht allemaal niet baten:
  1. <?PHP
  2. # Met uasort moet het mogelijk zijn, maar ik krijg het niet voor elkaar:
  3. uasort ($aInventory, array($aInventory, "item_id"));
  4. # Warning: uasort() [function.uasort]: Invalid comparison function. in ingekort/file.php on line 52
  5.  
  6.  
  7. a/r/sort ($aArray, SORT_DESC);
  8. ksort ($aArray, SORT_DESC);
  9. sort ($aArray['item_id'], SORT_DESC); // error:
  10. # Warning: sort() expects parameter 1 to be array, null given in ingekort/file.php on line 52
  11. asort ($aArray, SORT_NUMERIC, SORT_DESC);
  12. uksort ($aArray, "CMP"); // error:
  13. #Warning: uksort() [function.uksort]: Invalid comparison function. in verkort/file.php on line 52
  14. natsort ($aArray); // error:
  15. #Notice: Array to string conversion in ingekort/file.php on line 52
  16.  
  17. // Het sorteren in de queries is ook niet gelukt, i.v.m meerdere queries die deze array maken.
  18. ?>


Ik weet echt niet meer hoe ik dit kan gaan oplossen. Waarschijnlijk doe ik ook wat fout met de sort i.v.m de array-in-array. Heeft iemand een suggestie hoe ik dit kan gaan oplossen?

edit: Typo (Neelansj isj moejlijhk!)

Alvast bedankt,
Edwin ter Horst

4 antwoorden

Gesponsorde links
Offline citroen - 06/06/2007 10:12
Avatar van citroen Onbekend probeer eens met PHP.net: ksort
Offline Nrzonline - 06/06/2007 10:18
Avatar van Nrzonline PHP ver gevorderde @Citroen, werkt ook ook niet.
Offline Thomas - 06/06/2007 12:02
Avatar van Thomas Moderator Gebruik usort - maakt gebruik van een callback functie waarin je aan moet geven hoe er gesorteerd moet worden.

Nadeel: Je moet wel voor elke sorteerwijze een functie schrijven, maar misschien zou je op een of andere manier de key mee kunnen geven, zodat dit een parameter van de callback-functie wordt (hoe? geen idee).

  1. <?
  2. $aArray[0] = array ("item_id" => 22,
  3. "item_type" => "weapon",
  4. "item_level"=> 5);
  5. $aArray[1] = array ("item_id" => 35,
  6. "item_type" => "ring",
  7. "item_level"=> 2);
  8. $aArray[2] = array ("item_id" => 3,
  9. "item_type" => "quest",
  10. "item_level"=> 0);
  11.  
  12. function sort_item_id($a, $b)
  13. {
  14. if($a['item_id'] == $b['item_id'])
  15. {
  16. return 0;
  17. }
  18. return ($a['item_id'] < $b['item_id']) ? -1 : 1;
  19. }
  20.  
  21. function dump($a)
  22. {
  23. echo '<pre>'.print_r($a, 1).'</pre>';
  24. }
  25.  
  26. dump($aArray);
  27.  
  28. usort($aArray, 'sort_item_id');
  29.  
  30. dump($aArray);
  31. ?>
Offline Nrzonline - 06/06/2007 12:28
Avatar van Nrzonline PHP ver gevorderde Geniaal! Het werkt perfect, en weten we dat ook weer.
Echt super bedankt, <3 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.217s