ホームページ > バックエンド開発 > PHPチュートリアル > 再帰なしで3段階分類を実現する方法(テストコード添付)

再帰なしで3段階分類を実現する方法(テストコード添付)

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-13 12:55:00
オリジナル
939 人が閲覧しました

再帰なしで 3 レベルの分類を実現する方法 (テスト コードを添付) 解決策

この投稿は、anydy2008 によって 2013-01-06 12:07:44 によって最終編集されました。 数日前の投稿を読みました
http://bbs.csdn.net/topics/390331161
その中には、再帰なしで分類を実装する方法について言及した snmr_com さんの熱心な回答もありました。

このロジックに従って、カテゴリをツリー配列構造として実装できるのではないかと考えました。
以下は私が再帰的に生成したコードです:
<br />
<?<br />
$arr = array(<br />
    <br />
    array('id'=>1,'city_name'=>'中国','rel_id'=>'1','pid'=>0),<br />
    array('id'=>2,'city_name'=>'广东','rel_id'=>'1-2','pid'=>1),<br />
    array('id'=>3,'city_name'=>'深圳','rel_id'=>'1-2-3','pid'=>2),<br />
    array('id'=>4,'city_name'=>'广州','rel_id'=>'1-2-4','pid'=>2)<br />
   <br />
);<br />
<br />
function find_subclass( $pid ){<br />
    <br />
    global $arr;<br />
    $__arr = array();<br />
    foreach ( $arr as $k=>$v )<br />
    {<br />
        <br />
        if( $v['pid']==$pid )$__arr[] = $v;<br />
        <br />
    }<br />
    return $__arr;<br />
    <br />
}<br />
<br />
function tree_subclass($pid=0){<br />
    <br />
    $__arr = array();<br />
    $__arr = find_subclass($pid);<br />
    if( !empty($__arr) ){<br />
        <br />
        foreach ( $__arr as $k=>$v )<br />
        {<br />
<br />
            $__arr[$k]['subclass'] = tree_subclass($v['id']);<br />
            <br />
        }<br />
        <br />
    }<br />
    return $__arr;<br />
}<br />
<br />
var_dump(tree_subclass(0));<br />
<br />
?><br />
<br />
ログイン後にコピー



非再帰形式で取得されることが期待される配列構造:

<br>
配列(1) {<br>
[0]=><br>
配列(5) {<br>
["id"]=><br>
int(1)<br>
["都市名"]=><br>
文字列(4) "中国"<br>
["rel_id"]=><br>
文字列(1) "1"<br>
["pid"]=><br>
int(0)<br>
["サブクラス"]=><br>
配列(1) {<br>
[0]=><br>
array(5) {<br>
["id"]=><br>
int(2)<br>
["都市名"]=><br>
string(4) "広東省"<br>
["rel_id"]=><br>
string(3) "1-2"<br>
["pid"]=><br>
int(1)<br>
["サブクラス"]=><br>
配列(2) {<br>
[0]=><br>
配列(5) {<br>
["id"]=><div class="clear"></div>
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート