ホームページ  >  記事  >  バックエンド開発  >  PHPは無限の列ツリーを生成します

PHPは無限の列ツリーを生成します

迷茫
迷茫オリジナル
2017-03-26 10:17:583121ブラウズ

列配列:

$arr=Array(
    Array('cid' => 2,'cname' => '新闻','pid' => 0),
    Array('cid' => 4,'cname' =>'体育','pid' => 0),
    Array('cid' => 5,'cname' => '娱乐','pid' => 0),
    Array('cid' => 7,'cname' => '热点新闻','pid' =>2),
    Array('cid' => 8,'cname' => '小众新闻','pid' => 2),
    Array('cid' => 9,'cname' => '民谣新闻','pid' => 8),
);
<?php
$arr=Array(
    Array(&#39;cid&#39; => 2,&#39;cname&#39; => &#39;新闻&#39;,&#39;pid&#39; => 0),
    Array(&#39;cid&#39; => 4,&#39;cname&#39; =>&#39;体育&#39;,&#39;pid&#39; => 0),
    Array(&#39;cid&#39; => 5,&#39;cname&#39; => &#39;娱乐&#39;,&#39;pid&#39; => 0),
    Array(&#39;cid&#39; => 7,&#39;cname&#39; => &#39;热点新闻&#39;,&#39;pid&#39; =>2),
    Array(&#39;cid&#39; => 8,&#39;cname&#39; => &#39;小众新闻&#39;,&#39;pid&#39; => 2),
    Array(&#39;cid&#39; => 9,&#39;cname&#39; => &#39;民谣新闻&#39;,&#39;pid&#39; => 8),

);
function formatTree($array, $pid = 0,$level = 1,$field = array(&#39;pid&#39;=>&#39;pid&#39;,&#39;id&#39;=>&#39;id&#39;,&#39;children&#39;=>&#39;children&#39;)){
        $arr = array();
        foreach ($array as &$v) {
            if ($v[$field[&#39;pid&#39;]] == $pid) {
                $v[&#39;level&#39;] = $level;
                $tem = formatTree($array, $v[$field[&#39;id&#39;]],$v[&#39;level&#39;]+1,$field);
                //判断是否存在子数组
                $tem && $v[$field[&#39;children&#39;]] = $tem;
                $arr[] = $v;
            }
        }
        return $arr;
    }

$tree = formatTree( $arr,0,1, $field = array(&#39;pid&#39;=>&#39;pid&#39;,&#39;id&#39;=>&#39;cid&#39;,&#39;children&#39;=>&#39;children&#39;) );
echo &#39;<pre class="brush:php;toolbar:false">&#39;;
print_r( $tree);

?>

以上がPHPは無限の列ツリーを生成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。