2
配列変数またはオブジェクトにサブ階層ナビゲーションを格納する再帰関数(またはメソッド)を作成しようとしています。ここで私が持っているものです。PHPの動的多次元配列またはオブジェクト
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; } }
あなたはコメントアウトした場合echo $row
すべてが正常に動作します。それでは、私はそれが3層のナビゲーションでやりたいことはこれです:配列が動的にこれを行うだろう
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 ) )
単なる例として、よう:
$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
感謝を事前に。
質問:どのように再帰関数/メソッドを作成し、結果にエコーするのではなく、変数に再帰的情報を格納しますか?
問題: (a)はPHPはそれが 自分自身を再帰的に呼び出すたびに(b)のソリューションは、動的にオンザフライでアレイを作成するだろうが、それが可能
多分私はあなたを理解できませんでしたが、何か問題がありますか? – EFraim
そこに質問がありますか? –
少し話題ですが、アプリケーションで親IDで並べ替えて1つ選択します(つまり、0から始まる1つのメニューがある場合) – EFraim