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