Loading:


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;
         
         }




Dodano przez: divix
Ranga: Administrator serwisu Punktów: 38473
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-2021 v.1.5 | design: diviXdesign & rainbowcolors