login  Naam:   Wachtwoord: 
Registreer je!
 Forum

2 arrays sorteren

Offline Qhead - 08/02/2006 20:01 (laatste wijziging 08/02/2006 20:16)
Avatar van QheadHTML interesse Hey,

Momenteel probeer ik 2 arrays tegelijk te sorteren. Het ziet er ongeveer zo uit:
  1. <?php
  2. $arr1[] = 0; //in werkelijkheid zijn dit timestamps ;)
  3. $arr1[] = 5;
  4. $arr1[] = 3;
  5. $arr1[] = 8;
  6. $arr1[] = 6;
  7.  
  8. //dezelfde volgorde voor de onderwerpen:
  9. $arr2[] = "c";
  10. $arr2[] = "g";
  11. $arr2[] = "f";
  12. $arr2[] = "z";
  13. $arr2[] = "ab"; ?>

Het is dus de bedoeling dat ik beide arrays op DEZELFDE manier sorteer; en dus ongeveer dit krijg:

8 - z
6 - ab
5 - g
3 - f
0 - c

Iemand enige ideëen?
mvg Qhead

10 antwoorden

Gesponsorde links
Offline timo - 08/02/2006 20:04
Avatar van timo PHP ver gevorderde weet je hoeveel waardes de array heeft? dus komen er zonder dat jij dat doet xtra bij of... anders kan je met een forloop een heel eind komen...
Offline Qhead - 08/02/2006 20:05
Avatar van Qhead HTML interesse normaal hebben beide arrays hetzelfde aantal waarden ja, dus die kunnen we al tellen met count();
Offline timo - 08/02/2006 20:11
Avatar van timo PHP ver gevorderde probeer dit eens:
  1. <?php
  2. $arr1[] = 0; //in werkelijkheid zijn dit timestamps ;)
  3. $arr1[] = 5;
  4. $arr1[] = 3;
  5. $arr1[] = 8;
  6. $arr1[] = 6;
  7.  
  8. //dezelfde volgorde voor de onderwerpen:
  9. $arr2[] = "c";
  10. $arr2[] = "g";
  11. $arr2[] = "f";
  12. $arr2[] = "z";
  13. $arr2[] = "ab";
  14. $arr1count = count($arr1); // We tellen hoeveel er in de arrays zit
  15. $arr2count = count($arr2);
  16. for($arr=0,$arr<$arr1count,$arr++)
  17. {
  18. echo $arr1; echo $arr2; echo "<br />";
  19. }
Offline Gerard - 08/02/2006 20:15
Avatar van Gerard Ouwe rakker Die laatste reply heeft geen nut en geeft niks anders dan:
Array
Array
Array
Array
Array
Offline Qhead - 08/02/2006 20:19 (laatste wijziging 08/02/2006 20:20)
Avatar van Qhead HTML interesse Idd, bovendien geeft hij ook op m'n localhost een parse error:
arse error: parse error, unexpected ')', expecting ';' in ..\dropdown_test\index.php on line 16

maw moesten die komma's ff edited worden 
Offline ThAlmighty - 08/02/2006 20:30 (laatste wijziging 08/02/2006 20:31)
Avatar van ThAlmighty HTML beginner Zo klopt het script, maar ik dit geeft toch niet wat je wilt.

  1. <?php
  2. $arr1[] = 0; //in werkelijkheid zijn dit timestamps ;)
  3. $arr1[] = 5;
  4. $arr1[] = 3;
  5. $arr1[] = 8;
  6. $arr1[] = 6;
  7.  
  8. //dezelfde volgorde voor de onderwerpen:
  9. $arr2[] = "c";
  10. $arr2[] = "g";
  11. $arr2[] = "f";
  12. $arr2[] = "z";
  13. $arr2[] = "ab";
  14. $arr1count = count($arr1); // We tellen hoeveel er in de arrays zit
  15. $arr2count = count($arr2);
  16. for($arr=0,$arr<$arr1count,$arr++)
  17. {
  18. echo $arr1[$arr]; echo $arr2[$arr]; echo "<br />";
  19. }
  20. ?>


Als je ze in een database gooit, kan je het wel ontzettend makelijk doen.
Offline Qhead - 08/02/2006 20:52
Avatar van Qhead HTML interesse Zou ik het niet beter met ksort kunnen doen?
Offline Rens - 08/02/2006 21:06
Avatar van Rens Gouden medaille

Crew algemeen
  1. for($arr=0,$arr<$arr1count,$arr++)
  2. {
  3. echo $arr1[$arr]; echo $arr2[$arr]; echo "<br />";
  4. }


Dat stuk zal zeker nooit werken...
  1. for($arr=0;$arr<$arr1count;$arr++)
  2. {
  3. echo $arr1[$arr]; echo $arr2[$arr]; echo "<br />";
  4. }

Je moet ipv een , een ; gebruiken...
Offline nemesiskoen - 08/02/2006 21:30 (laatste wijziging 08/02/2006 22:16)
Avatar van nemesiskoen Gouden medaille

PHP expert
Ik mis het stuk waar de zooi gesorteerd wordt;-)

Ik zou zoiets doen
  1. <?php
  2. $arr1 = array('blaat', 'foo', ' bar');
  3. $arr2 = array(6, 4, 7);
  4.  
  5. $arr = array();
  6.  
  7. for($i = 0; $i < count($arr1); $i++) {
  8. $arr[$arr2[$i]] = $arr1[$i];
  9. }
  10. krsort($arr);
  11.  
  12. foreach($arr as $k => $v) {
  13.  
  14. echo $k ." ". $v;
  15.  
  16. }
  17. ?>


Natuurlijk kan je array ineens initialiseren met welke waardes dan ook.

  1. <?php
  2. $arr = (6 => 'blaat', 4 => 'foo', 7 => 'bar);
  3. krsort($arr);
  4. ...


Hieronder een functie die twee arrays accepteert. Ze op manier 'derde argument' sorteert en twee arrays terugstuurd:

  1. <?php
  2. function array2_sort(&$arr1, &$arr2, $func) {
  3.  
  4. $arr = array();
  5.  
  6. for($i = 0; $i < count($arr1); $i++) {
  7. $arr[$arr2[$i]] = $arr1[$i];
  8. }
  9.  
  10. $func($arr);
  11.  
  12. $arr1 = array();
  13. $arr2 = array();
  14.  
  15. foreach($arr as $k => $v) {
  16.  
  17. $arr1[] = $k;
  18. $arr2[] = $v;
  19.  
  20. }
  21.  
  22. }
  23.  
  24.  
  25. $arr1 = array('blaat', 'foo', ' bar');
  26. $arr2 = array(6, 4, 7);
  27.  
  28. array2_sort($arr1, $arr2, "krsort");
  29. echo "<br />";
  30. echo "<br />";
  31. var_dump($arr1);
  32. echo "<br />";
  33. var_dump($arr2);
  34.  
  35. /* output:
  36.  
  37.   array(3) { [0]=> int(7) [1]=> int(6) [2]=> int(4) }
  38.   array(3) { [0]=> string(4) " bar" [1]=> string(5) "blaat" [2]=> string(3) "foo" }
  39.  
  40. */
  41.  
  42. ?>


array_multisort doet ook zoiets geloof ik.
Offline Qhead - 08/02/2006 21:37
Avatar van Qhead HTML interesse K die laatste werkt. Thanks all!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.264s