Hier ist der Datensatz in der MySQL-Tabelle:PHP Erstellen Sie ein mehrdimensionales Objekt aus einem flachen Datensatz (von Mysql Tabelle)
die MySQL-Nested Sets verwenden, ist es nicht offensichtlich, weil ich noch habe die lft
und rgt
Spalten.
+------+----------+--------------------------------+-------+
+ Id | ParentId | Name | Level |
+------+----------+--------------------------------+-------+
| 1001 | NULL | Computing | 0 |
| 1002 | NULL | Cassettes & Vinyl | 0 |
| 1003 | 1001 | CD Players | 1 |
| 1004 | 1002 | CD Writers | 1 |
| 1005 | 1003 | CD-ROM Drives | 2 |
| 1006 | 1004 | CDs | 2 |
+------+----------+--------------------------------+-------+
Dies wird in einem 2-dimensionalen Array gezogen:
<?php
$data = array(
array('id' => 1001, 'ParentId' => NULL, 'Name' => 'Computing', 'Level' => 0),
array('id' => 1002, 'ParentId' => NULL, 'Name' => 'Cassettes & Vinyl', 'Level' => 0),
array('id' => 1003, 'ParentId' => 1001, 'Name' => 'CD Players', 'Level' => 1),
array('id' => 1004, 'ParentId' => 1002, 'Name' => 'CD Writers', 'Level' => 1),
array('id' => 1005, 'ParentId' => 1003, 'Name' => 'CD-ROM Drives', 'Level' => 2),
array('id' => 1006, 'ParentId' => 1004, 'Name' => 'Computing', 'Level' => 3)
);
?>
Ich versuche, die folgende mehrdimensionale Aufgabe zu lösen:
stdClass Object {
[0] => stdClass Object {
[id] => 1001
[name] => Computing
[parentId] => NULL
[level] => 0
[children] => stdClass Object {
[0] => stdClass Object {
[id] => 1003
[name] => CD Players
[parentId] => 1001
[level] => 1
[children] => stdClass Object {
[0] => stdClass Object {
[id] => 1005
[name] => CD Rom Drives
[parentId] => 1003
[level] => 2
}
}
}
}
}
[1] => stdClass Object {
[id] => 1002
[name] => Cassettes & Vinyl
[parentId] => NULL
[level] => 0
[children] => stdClass Object {
[0] => stdClass Object {
[id] => 1004
[name] => CD Writers
[parentId] => 1002
[level] => 1
[children] => stdClass Object {
[0] => stdClass Object {
[id] => 1006
[name] => CDs
[parentId] => 1004
[level] => 2
}
}
}
}
}
}
ich mit einer rekursiven Funktion gespielt haben mit etwas Glück.
Warum? - Dieses Objekt wird für die Erstellung von Zend_Navigation verwendet. Ich möchte zu diesem Zeitpunkt keine XML-Datei verwenden, sondern bevorzuge das Taxonomie-Management in der Datenbank.
Irgendwelche Ideen?
Id die Daten aus der Datenbank als Objekt mit mysql_fetch_object gezogen wurde, was würde der Code werden? –
Was ist mit der Verwendung von 'mysql_fetch_assoc()'? Das wäre weniger mühsam. Ansonsten ist der obige Code trivial genug. Es sollte nicht schwer für Sie sein, die notwendigen Änderungen vorzunehmen. – Tomalak