Ich habe ein Array mit Baumdaten (nach übergeordneter ID). Ich möchte es in ein mehrdimensionales Array konvertieren. Wie erreicht man das am besten? Gibt es dafür eine Kurzfunktion?
Quellarray:
$source = array(
'0' => array(
'Menu' => array(
'id' => 45
'name' => 'Home'
'parent_id' => 1
)
)
'1' => array(
'Menu' => array(
'id' => 47
'name' => 'Get started'
'parent_id' => 1
)
)
'2' => array(
'Menu' => array(
'id' => 72
'name' => 'Attributes'
'parent_id' => 71
)
)
'3' => array(
'Menu' => array(
'id' => 73
'name' => 'Headings'
'parent_id' => 71
)
)
'4' => array(
'Menu' => array(
'id' => 75
'name' => 'Links'
'parent_id' => 71
)
)
'5' => array(
'Menu' => array(
'id' => 59
'name' => 'Images'
'parent_id' => 75
)
)
'6' => array(
'Menu' => array(
'id' => 65
'name' => 'Lists'
'parent_id' => 75
)
)
);
Einige Eltern fehlen im Quellarray. Ich möchte, dass die Elemente mit fehlendem Elternteil root sind. Ergebnisarray:
$result = array(
'0' => array(
'Menu' => array(
'id' => 45
'name' => 'Home'
'parent_id' => 1
)
'Children' => array()
)
'1' => array(
'Menu' => array(
'id' => 47
'name' => 'Get started'
'parent_id' => 1
)
'Children' => array()
)
'2' => array(
'Menu' => array(
'id' => 72
'name' => 'Attributes'
'parent_id' => 71
)
'Children' => array()
)
'3' => array(
'Menu' => array(
'id' => 73
'name' => 'Headings'
'parent_id' => 71
)
'Children' => array()
)
'4' => array(
'Menu' => array(
'id' => 75
'name' => 'Links'
'parent_id' => 71
)
'Children' => array(
'0' => array(
'Menu' => array(
'id' => 59
'name' => 'Images'
'parent_id' => 75
)
'Children' => array()
)
'1' => array(
'Menu' => array(
'id' => 65
'name' => 'Lists'
'parent_id' => 75
)
'Children' => array()
)
)
)
);
Update: eckige Klammern entfernt.
Das erste ist bereits ein mehrdimensionales Array. Mehrdimensional bedeutet einfach Arrays innerhalb von Arrays.
– Animation
♦
16. Juli 10 um 1:09 Uhr
äh, das ist kein gültiges PHP .. was tut [0] => Array(… bzw [‘Menu’] => array(… mean? Ich stecke also ziemlich fest und verstehe die Form Ihrer Eingabedaten nicht.
– Scott Evernden
16. Juli 10 um 1:14 Uhr
@animuson: Ja. Sie haben Recht. Ich war nicht präzise. aber ich denke es ist klar was ich will oder? @SpawnCxy: ja @Scott: das ist ein gültiges PHP. Array-Schlüssel können Zeichenfolgen sein, nicht nur Zahlen
– Banker
16. Juli 10 um 1:19 Uhr
Sie sind sich bewusst, dass Sie in CakePHP Ihr Modell als richtigen MPTT-Baum strukturieren, das Baumverhalten anhängen und einfach eine ausführen können
$model->find('threaded')
um dieses Ergebnis zu erhalten? book.cakephp.org/view/1339/Tree– verzeihen
♦
16. Juli 10 um 2:05 Uhr
@deceze: Ja, ich kenne ‘threaded’. Daran habe ich vorhin gedacht. Das Quellarray in meiner Frage ist das Ergebnis einiger Manipulationen mit dem Abfrageergebnis. Es ist nicht einfach, die Manipulationen mit ‘threaded’ Arrays durchzuführen. Es würde zu viele Abfragen erfordern, um eine einzige Abfrage für die von mir benötigten Ergebnisse durchzuführen. Also mache ich nur eine Abfrage, cache sie und filtere, was ich von dort brauche, und formatiere die Arrays danach.
– Banker
16. Juli 10 um 2:26 Uhr