Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]sortowanie 2 wymiarowej tablicy
Forum PHP.pl > Forum > Przedszkole
marcus753
witam mam taki plik baza2.txt

który zawiera:

2|5
2|3
4|7
8|9
2|3
6|9

itd...

teraz chciałbym posortować to tablice tak aby wypisać na ekranie:

2|3
2|3
2|5
4|7
6|9
8|9

napisałem taki skrypt:

  1. <?php
  2.  
  3. $baza = "baza2.txt";
  4. $wiersz = file($baza);
  5. $a=0;
  6.  
  7.  
  8. while(!empty($wiersz[$a])){
  9.  
  10. //wyciagamy dane pierwszego rekordu
  11. $rekord = explode('|',$wiersz[$a]);
  12. $rzad = $rekord[0];
  13. $kolumna = $rekord[1];
  14.  
  15.  
  16.  
  17. $wiersz1[$a][0]=$rzad;
  18. $wiersz1[$a][1]=$kolumna;
  19.  
  20. $a=$a+1;
  21.  
  22. }
  23.  
  24. array_multisort($wiersz[][0], SORT_DESC, $wiersz[][1], SORT_ASC, $wiersz);
  25.  
  26. print_r($wiersz);
  27. ?>


no i klops sciana.gif
nie działa co w nim jest nie tak ? funkcja multisort chyba nadaje się do tego w sam raz...
evolucja
  1. <?php
  2.  
  3. $baza = "baza2.txt";
  4. $wiersz = file($baza);
  5. $a=0;
  6. $b=0;
  7. while(!empty($wiersz[$a])){
  8.  
  9. //wyciagamy dane pierwszego rekordu
  10. $rekord = explode('|',$wiersz[$a]);
  11. $rzad = $rekord[0];
  12. $kolumna = $rekord[1];
  13.  
  14.  
  15.  
  16. $wiersz1[$a]=$rzad;
  17. $wiersz2[$a]=$kolumna;
  18.  
  19. $a++;
  20.  
  21. }
  22.  
  23. array_multisort($wiersz1, SORT_ASC, $wiersz2, SORT_ASC);
  24.  
  25. while(!empty($wiersz1[$b])){
  26. echo "$wiersz1[$b]|$wiersz2[$b]<br>";
  27. $b++;
  28. }
  29.  
  30. ?>
marcus753
Mam problem z tym skryptem sortuje mi tablice i daje taki wynik:

2|124
3|66
3|69
4|62
4|63
5|109
5|63
5|66


dlaczego 109 jest przed 63 questionmark.gif

nie rozumiem tego...

2|124
2|124
3|66
3|69
4|62
4|63
5|107
5|108
5|109
5|109

5|63
5|63
5|66
5|66
6|109
6|116
6|28
6|286
6|286

107 jest przed 63 hmm jak to rozwiązać questionmark.gif
evolucja
  1. <?php
  2.  
  3. $baza = "baza2.txt";
  4. $wiersz = file($baza);
  5. $a=0;
  6. $b=0;
  7. while(!empty($wiersz[$a])){
  8.  
  9. //wyciagamy dane pierwszego rekordu
  10. $rekord = explode('|',$wiersz[$a]);
  11. $rzad = $rekord[0];
  12. $kolumna = $rekord[1];
  13.  
  14.  
  15.  
  16. $wiersz1[$a]=$rzad;
  17. $wiersz2[$a]=$kolumna;
  18.  
  19. $a++;
  20.  
  21. }
  22.  
  23. array_multisort($wiersz1, SORT_NUMERIC, SORT_ASC, $wiersz2, SORT_NUMERIC, SORT_ASC);
  24.  
  25. while(!empty($wiersz1[$b])){
  26. echo "$wiersz1[$b]|$wiersz2[$b]<br>";
  27. $b++;
  28. }
  29.  
  30. ?>


może tak?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.