2009-07-15 15 views
2

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

+0

Vielleicht habe ich versäumt, Sie zu verstehen, aber haben Sie ein Problem? – EFraim

+0

Haben Sie eine Frage da drin? –

+0

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

Antwort

Verwandte Themen