Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]sortowanie 2 wymiarowej tablicy
marcus753
post
Post #1





Grupa: Zarejestrowani
Postów: 281
Pomógł: 3
Dołączył: 8.06.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/sciana.gif)
nie działa co w nim jest nie tak ? funkcja multisort chyba nadaje się do tego w sam raz...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
evolucja
post
Post #2





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

Ostrzeżenie: (0%)
-----


  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. ?>
Go to the top of the page
+Quote Post
marcus753
post
Post #3





Grupa: Zarejestrowani
Postów: 281
Pomógł: 3
Dołączył: 8.06.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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ć (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
evolucja
post
Post #4





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

Ostrzeżenie: (0%)
-----


  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?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 1.10.2025 - 17:17