Ich habe ein multidimensionales PHP-Array, das ich verwende, um einen hierarchischen UL-Baum zu generieren. Vor dem Anzeigen des UL-Baums möchte ich jedoch jede Ebene innerhalb des Arrays alphabetisch nach dem Attribut 'name' sortieren. Ich stelle mir eine Funktion vor, die jede Ebene rekursiv überprüft, alphabetisch sortiert und zur nächsten Ebene weitergeht, um diese Ebene zu sortieren. Aber ich bin mir nicht sicher, wie ich das machen soll. Jede Hilfe wäre willkommen!Sortieren jeder Ebene eines geschachtelten multidimensionalen PHP-Arrays
Mein Array:
Array (
[0] => Array (
[id] => 39348
[parent] => 0
[name] => Test
[children] => Array (
[0] => Array (
[id] => 41911
[parent] => 39348
[name] => Test2
[children] => Array (
[0] => Array (
[id] => 40929
[parent] => 41911
[name] => Test3
[children] => Array (
[0] => Array (
[id] => 40779
[parent] => 40929
[name] => C
)
[1] => Array (
[id] => 40780
[parent] => 40929
[name] => A
)
)
)
)
)
Mein Versuch, die die Reihenfolge um sich bewegt, aber es ist noch nicht alphabetisch. Beachten Sie, dass die Array ($ this, 'sortByName') wird von CodeIgniter erforderlich, die ich in arbeite:
function recursive_sort($array) {
usort($array, array($this,'sortByName'));
foreach($array as $key => $value) {
if(isset($value['children']) && !empty($value['children']) && is_array($value['children'])) {
$array[$key]['children'] = $this->recursive_sort($value['children']);
}
}
return $array;
}
function sortByName($a, $b){
return $a->name - $b->name;
}
UPDATE: SOLUTION
function recursive_sort($array,$child='children') {
usort($array,function($a,$b){
return strcasecmp($a['name'], $b['name']);
});
foreach($array as $key => $value) {
if(isset($value[$child]) && !empty($value[$child]) && is_array($value[$child])) {
$array[$key][$child] = $this->recursive_sort($value[$child],$child);
}
}
return $array;
}
und Ihr Versuch ist? –
Überprüfen Sie dies, wenn es hilft: http://StackOverflow.com/a/3805256/5645769 –
@TareqMahmood Vielen Dank für die Referenz. Die für diesen Post aufgelisteten Lösungen scheinen jedoch nur für die erste Ebene innerhalb des mehrdimensionalen Arrays zu gelten. Sie adressieren nicht meine Situation, wo ich Arrays verschachtelt habe. – skiindude22