私は実際にZFに取り組んでいます。以下のようにデータを表示するためにツリーを作成したいカテゴリテーブルがあります。
Category
--Sub cat 1
--Sub cat 2
----Su sub cat 1
Another Category
--Sub cat 1
//...etc...
メソッドを使用してfetchAll
すべてのデータを取得しています。すべて正常に動作します。しかし、その後、以下のようにツリーを二重の foreach ループに作成しようとしています。
$tree = array();
foreach($data as $parent){
$tree[$parent->name] = array();
foreach($data as $child){
if($child->parent_id == $parent->id){
$tree[$parent->name][] = $child->name;
}
}
}
問題は、ループの最初の繰り返しの後にループが停止するmain
ことです。そのため、最初の親を取得しているだけで、それはサブカテゴリですが、2 番目の親には続きません。
次のフィールドとしての私のデータベーステーブル:
id, name, parent_id
何か案が?
編集
Thibault のおかげで、古き良きfor
ループを使用して動作しました:
for($i=0;$i<count($data);$i++){
$tree[$data[$i]->name] = array();
for($j=0;$j<count($data);$j++){
if($data[$j]->parent_id == $data[$i]->id){
$tree[$data[$i]->name][] = $data[$j]->name;
}
}
}