私は、親子行を持つデータベーステーブルを持ち、1つの親子子がフィールド "親"でリンクされています。再帰的なPHPを使用せずに親子を反復する
recursive関数をPHPで使用することで、jerarquy構造をループおよび印刷する方法はわかりましたが、1つのループコードで再現しようとすると、同じ形式でデータを表示できません。このコードのサンプルでは、データベーステーブル内のすべての項目が一覧表示されますが、注文していない、それは最初のトップレベルを印刷し、私は古典をしたい:
Top 1 >> Level 1 >> Level 2 >> Level 3
Top 2 >> Level 1
Top 3 >> Level 1 >> Level 2
$parent = array();
array_push($parent, 0);
while(!empty($parent)){
foreach($parent as $key => $mother){
unset($parent[$key]);
$sql = "SELECT * FROM levels WHERE parent = " . $mother;
$res = mysql_query($sql);
while($row=mysqli_fetch_object($res)){
print $row->name . "<br />";
array_push($parent, $row->id);
} // while
} // foreach
} // while
このコードの結果は
トップ1 トップであります2 上位3 レベル1 ...
1つのクエリで必要なすべてのデータを選択してから何かを行う方が簡単ではないでしょうか? – simon
再帰関数の場合、いくつかのSELECTを使用する方がはるかに簡単だと思います。いずれにしても、データベースとまったく同じ構造で配列が配列されていると考えることができます。それをどのように反復して、好んでデータをリストするのですか?再帰は非常に簡単ですが、私は非再帰的な方法を求めます。 – Cesar