Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Sortowanie tablic w dwuwymiarowej tablicy według klucza
Shadowsword
post
Post #1





Grupa: Zarejestrowani
Postów: 149
Pomógł: 5
Dołączył: 9.04.2008
Skąd: W-WA

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


Witam!
Mam taką tablice:
Kod
Array
(
    [plik2.mp3] => Array
        (
            [plik] => plik2.mp3
            [artysta] => Shadowsword
            [tytul] => Fajna piosenka
        )

)
Array
(
    [plik1.mp3] => Array
        (
            [plik] => plik1.mp3
            [artysta] => Shadowsword
            [tytul] => Bardzo fajna piosenka
        )

)

I chciałbym ją posortować alfabetycznie według nazwy pliku, czyli żeby plik1.mp3 był przed plik2.mp3. Niestety, ale
Kod
array_multisort($my_array[plik], SORT_ASC, SORT_REGULAR);

zwraca pierdoły, czyli tablicę która poza tablicą [plik(numer).mp3] => array zwraca jeszcze pustą [plik]=>. Co muszę wpisać między nawiasem w multisort, aby posortowało tablice w odpowiedni sposób?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
TheaSiX
post
Post #2





Grupa: Zarejestrowani
Postów: 110
Pomógł: 10
Dołączył: 3.09.2006
Skąd: Bishop Auckland

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


spróbuj tego kodu podanego w komentarzach na php.net przez za@byza.it
  1. <?php
  2. function array_sort_func($a,$b=NULL) {
  3.   static $keys;
  4.   if($b===NULL) return $keys=$a;
  5.   foreach($keys as $k) {
  6.      if(@$k[0]=='!') {
  7.         $k=substr($k,1);
  8.         if(@$a[$k]!==@$b[$k]) {
  9.            return strcmp(@$b[$k],@$a[$k]);
  10.         }
  11.      }
  12.      else if(@$a[$k]!==@$b[$k]) {
  13.         return strcmp(@$a[$k],@$b[$k]);
  14.      }
  15.   }
  16.   return 0;
  17. }
  18.  
  19. function array_sort(&$array) {
  20.   if(!$array) return $keys;
  21.   $keys=func_get_args();
  22.   array_shift($keys);
  23.   array_sort_func($keys);
  24.   usort($array,"array_sort_func");      
  25. }
  26. ?>


Wywołaj funkcję:
  1. <?php
  2. array_sort($my_array, "kryterium1", "kryterium2");
  3. ?>
Go to the top of the page
+Quote Post

Posty w temacie


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: 10.10.2025 - 06:25