Ich versuche, eine rekursive Funktion (oder Methode) zu erstellen, die eine untergeordnete Navigation in einer Array-Variablen oder einem Objekt speichert. Hier ist, was ich habe:PHP dynamisches multidimensionales Array oder Objekte
class Navigation extends Database { function build($parent_id = 0) { $query = 'SELECT id, name, href, parent_id FROM navigation WHERE parent_id = '.$parent_id.' ORDER BY name'; $results = $db->query($query); while ($row = $results->fetch_object()) { $nav[$row->id] = $row; // echo $row; $this->build($row->id); } return $nav; } }
Wenn Sie kommentieren Sie die echo $row
alles funktioniert. Also, was will ich es in einem dreistufigen Navigation tun, ist dies:
Array ( [1] => stdClass Object ( [id] => 1 [name] => Home [href] => home.php [parent_id] => 0 ) [2] => stdClass Object ( [id] => 2 [name] => Company [href] => company.php [parent_id] => 0 ) [4] => stdClass Object ( [id] => 4 [name] => Company Vision [href] => company_vision.php [parent_id] => 2 ) [5] => stdClass Object ( [id] => 5 [name] => Company Goals [href] => company_goals.php [parent_id] => 2 ) [3] => stdClass Object ( [id] => 3 [name] => Products [href] => products.php [parent_id] => 0 ) [6] => stdClass Object ( [id] => 6 [name] => Products Shoes [href] => products_shoes.php [parent_id] => 3 ) [7] => stdClass Object ( [id] => 7 [name] => Nike [href] => products_shoes_nike.php [parent_id] => 6 ) )
Nur als Beispiel, so das Array dynamisch dies tun würde:
$nav[$row->id] = $row; // Home $nav[$row->id] = $row; // Company $nav[2][$row->id] = $row; // Company Vision $nav[2][$row->id] = $row; // Company Goals $nav[$row->id] = $row; // Products $nav[3][$row->id] = $row; // Products Shoes $nav[3][6][$row->id] = $row; // Products Shoes Nike
Vielen Dank im Voraus.
Frage: Wie machen Sie eine rekursive Funktion/Methode und speichern die rekursive Information in einer Variablen, anstatt die Ergebnisse zu wiederholen?
Probleme: (a) PHP die Variable überschreibt es jedes Mal selbst ruft rekursiv (b) würde eine Lösung dynamisch on the fly Erstellen eines Arrays sein, aber ich weiß nicht, ob das möglich ist
Vielleicht habe ich versäumt, Sie zu verstehen, aber haben Sie ein Problem? – EFraim
Haben Sie eine Frage da drin? –
Ein bisschen Off-Topic, aber ich würde es eine einzige Auswahl mit der Sortierung nach Eltern-ID in der Anwendung (das heißt, wenn Sie ein einziges Menü haben beginnend mit 0) – EFraim