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


kontakt w sprawie miejsca



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