Loading:

Promocja Helion.pl

Sortowanie tablicy wielowymiarowej - zaawansowany przykład

Skrypt sortuje tablicę wielowymiarową, według podanego przez nas klucza.

 

Przypuśćmy, że mamy tablicę, która posiada elementy będące również tablicami ale asocjacyjne. Dzięki temu skrypcie, będziecie mogli posortować tablice asocjacyjne według klucza.

 

Przykład:

 

$grupaLudzi1 = array (klucz_id=>"MWZ", imie1=>"Marian", imie2=>"Włodek", imie3=>"Zbyszek");
$grupaLudzi2 = array(klucz_id=>"ALP", imie1=>"Anonim", imie2=>"Lolkowki", imie3=>"Paździch");

$tablicaGlowna = array($grupaLudzi1, $grupaLudzi2);

 

Rozwiązanie:

 

sortujTabliceWielowymiarowa($tablicaGlowna, array('klucz_id'=>SORT_ASC));

 

zwróci:

Array
(
[1] => Array
(
[klucz_id] => ALP
[imie1] => Anonim
[imie2] => Lolkowki
[imie3] => Pazdzich
)

[0] => Array
(
[klucz_id] => MWZ
[imie1] => Marian
[imie2] => Wlodek
[imie3] => Zbyszek
)



Napisz Artykuł

Listing

public function sortujTabliceWielowymiarowa($array, $cols) {
          $colarr = array();
          foreach ($cols as $col => $order) {
           $colarr[$col] = array();
           foreach ($array as $k => $row) { $colarr[$col]['_'.$k] = strtolower($row[$col]); }
          }
          $eval = 'array_multisort(';
          foreach ($cols as $col => $order) {
           $eval .= '$colarr[\''.$col.'\'],'.$order.',';
          }
          $eval = substr($eval,0,-1).');';
          eval($eval);
          $ret = array();
          foreach ($colarr as $col => $arr) {
           foreach ($arr as $k => $v) {
                $k = substr($k,1);
                if (!isset($ret[$k])) $ret[$k] = $array[$k];
                $ret[$k][$col] = $array[$k][$col];
           }
          }
          return $ret;
         
         }


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=2&t=12595

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: divix
Ranga: Administrator serwisu Punktów: 38323
Komentarze użytkowników
Gdyby tak prostszy przykład.
autor: jurek123 | 12618 | 2011-10-26 20:02:37


    • Treść komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-17 v.1.5 | design: diviXdesign & rainbowcolors