ホームページ >バックエンド開発 >PHPチュートリアル >PHP 再帰を使用して無限分類を実現する 書式設定された array_PHP チュートリアルの詳細な説明
製品を無制限に分類したいと考えています
まず、データベースフィールドは次のとおりです:
id ----------製品主キーID
fid ----------製品親id
name ---------- 製品名
の最終的な出力配列形式は
< PRE class=php name="コード">array(<br> 0=>array(<br> 'id'=>1,<br> 'fid'=>0,<br> 'name '=>'フランス製品'<br> 'child'=>array(<br> 0=>array( <br> 'id'=>12,<br> 'fid'=>1,<br> 'name'=>' Perfume'<br> 'child'=> array(<br> 0=>array(<br> 'id'=>34,<br> 'fid'=>12,<br> 'name'=>'女性の香水'<br> )<br> )<br> ),<br> 1= > ;array(<br> 'id'=>13,<br> 'fid'=>1,<br> 'name'=>'Notebook'<br> 'child'=>NUll<br> )<br> )<br> ),<br> 1=> ;array(), //形式は上と同じなので、意味がないので書きません<br> 2=>array()<br>)</PRE> ;<BR><BR><PRE>gt;
gt;
gt;
<?php<BR> //データベースには mysql PDO を使用しますが、全体の考え方は同じです<BR>$conn=mysql_connect('localhost','root',' 123');<BR>if(mysql_errno()){<BR> printf('接続に失敗しました'.mysql_error());<BR>}<BR>mysql_select_db('edeng');<BR>mysql_set_charset('utf8');<BR>/*<BR> *再帰関数<BR> *@param id fid=$id のすべてのサブクラスをクエリするには、ここに $id を指定します。データベースの最上位カテゴリの fid を 0 に設定したため、デフォルト値は 0 に設定されます<BR> */<BR>function get_array($ id=0){<BR> $sql="select id,fid,cname from e_cat where fid = $id";<BR> $result=mysql_query($sql);<BR> $arr=array();<BR> if($result && mysql_affected_rows ()){<BR> while($rows=mysql_fetch_assoc($result)){<BR><br> $ rows['child']=get_array($rows['id']);<br> $arr[] = $rows;<BR> }<BR> return $arr;<BR> }<BR>} <BR>echo '<pre class="brush:php;toolbar:false">';<br>$result = get_array();<br>print_r($result);<br>
この関数は、最初に fid 0
を使用してすべてのクラスをクエリし、while ループを 1 つずつ実行します。 1 つは、fid が現在のクラスの ID であるサブクラスを検索するためのものです
gt;