Ich habe ein Baum-Array, aber ich möchte das Array nach Dimension gruppieren, so dass ich jede Ebene des Baumes in seinem eigenen DIV anzeigen kann.Wie gruppiere Array nach Dimensionsebene?
Mein Baum Array ist:
$tree =
array(
1 => array('id'=>1, 'title'=>'Category 1', 'parent_id'=>0,
'children'=> array(
2 => array('id'=>2, 'title'=>'Category 2', 'parent_id'=>1, 'children'=>''),
3 => array('id'=>3,'title'=>'Category 3','parent_id'=>1,'children'=>''),
4 => array('id'=>4, 'title'=>'Category 4', 'parent_id'=>1,
'children'=> array(
8 => array('id'=>8, 'title'=>'Category 8', 'parent_id'=>4, 'children'=>''),
9 => array('id'=>9, 'title'=>'Category 9', 'parent_id'=>4, 'children'=>''),
10 => array('id'=>10, 'title'=>'Category 10', 'parent_id'=>4,
'children'=> array(
11 => array('id'=>11, 'title'=>'Category 11', 'parent_id'=>10, 'children'=>''),
12 => array('id'=>12, 'title'=>'Category 12', 'parent_id'=>10, 'children'=>''),
13 => array('id'=>13, 'title'=>'Category 13', 'parent_id'=>10, 'children'=>'')
)
)
)
)
)
),
5 => array('id'=>5, 'title'=>'Category 5', 'parent_id'=>0,
'children'=>array(
6 => array('id'=>6,'title'=>'Category 6', 'parent_id'=>5, 'children'=>''),
7 => array('id'=>3,'title'=>'Category 7', 'parent_id'=>5, 'children'=>'')
)
)
);
ich auf jeder Ebene wie this trennen möchten. Meine Idee für die gruppierte Ausgabe ist so etwas wie folgt aus:
$grouped = array(
0 => array(
1 => array('id'=>1, 'title'=>'Category 1', 'parent_id'=>0),
5 => array('id'=>5, 'title'=>'Category 5', 'parent_id'=>0)
),
1 => array(
2 => array('id'=>2, 'title'=>'Category 2', 'parent_id'=>1),
3 => array('id'=>3, 'title'=>'Category 3', 'parent_id'=>1),
4 => array('id'=>4, 'title'=>'Category 4', 'parent_id'=>1),
6 => array('id'=>6, 'title'=>'Category 6', 'parent_id'=>5),
7 => array('id'=>3, 'title'=>'Category 7', 'parent_id'=>5)
),
2 => array(
8 => array('id'=>8, 'title'=>'Category 8', 'parent_id'=>4),
9 => array('id'=>9, 'title'=>'Category 9', 'parent_id'=>4),
10 => array('id'=>10, 'title'=>'Category 10', 'parent_id'=>4)
),
3 => array(
11 => array('id'=>11, 'title'=>'Category 11', 'parent_id'=>10),
12 => array('id'=>12, 'title'=>'Category 12', 'parent_id'=>10),
13 => array('id'=>13, 'title'=>'Category 13', 'parent_id'=>10)
)
);
Etwas anderes ist in Ordnung, wenn Sie andere Ideen haben, aber ich möchte foreach
das Ausgabe-Array der Lage sein, und in einem anderen, alle Elemente eines jeden Levels angezeigt werden DIV.
EX:
<div id="box-1">
Group Array[1]
</div>
<div id="box-2">
Group Array[2]
</div>
<div id="box-3">
Group Array[3]
</div>
<div id="box-4">
Group Array[4]
</div>
Wie kann ich das tun?
Siehe bitte [fragen] und [Die perfekte Frage] (http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/). – Rizier123
Sie können dies rekursiv implementieren. Schreiben Sie eine Funktion, die alle Informationen der aktuellen Ebene zu einer Liste hinzufügt, und rufen Sie dann (innerhalb dieser Funktion) die Funktion selbst für die Eigenschaft "children" auf. – jojonas
Ich habe Ihre Frage bearbeitet, um den Code aus den Bildern hinzuzufügen und zu verdeutlichen, was ich als Ihr beabsichtigtes Ziel empfand. Bitte zögern Sie nicht, die Änderungen erneut zu bearbeiten oder rückgängig zu machen, wenn dies nicht Ihren Vorstellungen entspricht. Wenn Sie Code hinzufügen können, mit dem Sie dies versucht haben, kann dies helfen, die Frage weiter zu klären. –