2016-09-22 7 views
0

Ich habe ein Array wie:Sort-Array und Kind-Arrays nach Wert

$array = array(
    4 => array(
     'position' => 0 
     'children' => array(
     ) 
    ), 
    2 => array(
     'position' => 0 
     'children' => array(
      3 => array(
       'position' => 1 
      ) 
      5 => array(
       'position' => 0 
      ) 
     ) 
    ) 
) 

I die äußeren Anordnungen (2 & 4) durch Tasten 'Position' zu sortieren, benötigen, aufsteigend (0 aufwärts) und dann sortieren jede innere Reihe von denen ("Kinder"), durch ihre jeweilige Position.

Es könnte 6 Hauptarrays geben, mit 6 'Kinder' Arrays zu sortieren.

Was ist der beste Weg, dies zu tun?

Antwort

1

Wenn ich Ihre Erklärung des Problems richtig verstehe, wird folgender Code für Sie arbeitet:

//sort the outer array 
usort($array, function($a, $b) { 
    return $a['position'] - $b['position']; 
}); 
//sort childrens 
foreach ($array as &$item) { 
    usort($item['children'], function($a, $b) { 
     return $a['position'] - $b['position']; 
    }); 
} 

In jedem Fall usort ist eine native PHP-Funktion, die für die beschriebenen Fall sehr nützlich sein wird. http://php.net/manual/en/function.usort.php

+0

Siehe Ich habe es versucht. Ich bin nicht durch Verweis gegangen, könnte das mein Problem gewesen sein? Ich habe das geändert, also brauche ich es nicht. –

+1

Ja, Sie müssen Sub-Array als Referenz übergeben, um es zu ändern –