Ich versuche eine Navigationsmenü-Liste zu sortieren, die mir zur Verfügung gestellt wird (als $ -Antwort in einem Array). Es wäre also parent_id (null ist das oberste Tier nav.), Dann würden die Unterseiten unter die Eltern-IDs fallen, was page_id dann in der page_order wäre. Grundsätzlich in der Reihenfolge, in der Sie die Nav sehen würden. Menü auf einer Website.Sortiere stdClass nach parent_id, parent_id ~> page_id, dann page_order
Zum Beispiel:
First Nav
--First Nav Sub Page 1
--First Nav Sub Page 2
--First Nav Sub Page 3
--First Nav Sub Page 4
--First Nav Sub Page 5
Second Nav
Third Nav
--Third Nav Sub Page 1
--Third Nav Sub Page 2
Fourth Nav
Das Array:
Array (
[0] => stdClass Object
(
[page_id] => 122021
[title] => First Nav
[page_order] => 1
[parent_id] => null
)
[1] => stdClass Object
(
[page_id] => 99122
[title] => Second Nav
[page_order] => 2
[parent_id] => null
)
[2] => stdClass Object
(
[page_id] => 260447
[title] => Third Nav
[page_order] => 3
[parent_id] => null
)
[3] => stdClass Object
(
[page_id] => 170627
[title] => Fourth Nav
[page_order] => 4
[parent_id] => null
)
[4] => stdClass Object
(
[page_id] => 134788
[title] => Third Nav Sub Page 1
[page_order] => 1
[parent_id] => 260447
)
[5] => stdClass Object
(
[page_id] => 157074
[title] => Third Nav Sub Page 2
[page_order] => 2
[parent_id] => 260447
)
[6] => stdClass Object
(
[page_id] => 699423
[title] => First Nav Sub Page 1
[page_order] => 1
[parent_id] => 122021
)
[7] => stdClass Object
(
[page_id] => 346209
[title] => First Nav Sub Page 2
[page_order] => 2
[parent_id] => 122021
)
[8] => stdClass Object
(
[page_id] => 732773
[title] => First Nav Sub Page 3
[page_order] => 3
[parent_id] => 122021
)
[9] => stdClass Object
(
[page_id] => 164338
[title] => First Nav Sub Page 4
[page_order] => 4
[parent_id] => 122021
)
[10] => stdClass Object
(
[page_id] => 671117
[title] => First Nav Sub Page 5
[page_order] => 5
[parent_id] => 122021
)
)
ich es geschafft haben, diese in einem Teilauftrag zu bekommen, von parent_id dann page_order (wie oben in der Anordnung gezeigt) unter Verwendung des ArrSort Funktion, die unten notiert ist, aber ich war nicht in der Lage, die Unterseiten page_order 'unterhalb' ihrer parent_id zu setzen.
Ich habe versucht:
function ArrSort ($Array){
$parent_id = array();
$page_order = array();
foreach($Array as $key => $value){
$parent_id[] = $value->parent_id;
$page_order[] = $value->page_order;
}
array_multisort($parent_id, SORT_ASC, $page_order, SORT_ASC, $Array);
return $Array;
}
$sorted_pages_array = ArrSort($response);
Ich habe auch die folgende versucht,
Und eine Kombination aus beidem:
$sorted_pages_array = ArrSort($response);
usort($sorted_pages_array, "PageList");
Leider bin ich nicht so vertraut mit Arrays und sortieren, und könnte etwas Hilfe gebrauchen.
Dies funktioniert nicht. Es legt nicht nur die parent_id 'null' an erster Stelle, sondern auch die Seite_order ist nicht in der richtigen Reihenfolge. Tatsächlich kann ich in den Ergebnissen keine Reihenfolge sehen, die tatsächlich "schlechter" ist als meine ArrSort-Funktion. –