Column array:
$arr =array ( ' cid ' = 2, ' cname ' = ' news ', ' pid ' = 0), Array (' cid ' = 4, ' cname ' = ' sports ', ' pid ' = > 0), Array (' cid ' = 5, ' cname ' = ' entertainment ', ' pid ' = 0), Array (' cid ' = 7, ' cname ' = ' hot News ', ' pid ' =&G T;2), Array (' cid ' = 8, ' cname ' = ' niche News ', ' pid ' = 2), Array (' cid ' = 9, ' cname ' = ' ballad News ', ' pid ' =&G T 8),);
<?php$arr=array (' cid ' = 2, ' cname ' = ' news ', ' pid ' = 0), array (' cid ' = 4, ' cname ' = ' sports ', ' pi d ' + 0), array (' cid ' = 5, ' cname ' = ' entertainment ', ' pid ' = 0), array (' cid ' = 7, ' cname ' = ' hot News ', ' pid ' = >2), Array (' cid ' = 8, ' cname ' = ' niche News ', ' pid ' = 2), array (' cid ' = 9, ' cname ' = ' ballad News ', ' pid ' => ; 8); function Formattree ($array, $pid = 0, $level = 1, $field = Array (' pid ' = ' pid ', ' id ' = ' = ' id ', ' children ' = ') Children ') {$arr = array (); foreach ($array as & $v) {if ($v [$field [' pid ']] = = $pid) {$v [' level '] = $level; $tem = Formattree ($array, $v [$field [' id '], $v [' Level ']+1, $field); Determine if there are sub-arrays $tem && $v [$field [' children ']] = $tem; $arr [] = $v; }} return $arr; } $tree = Formattree ($arr, 0,1, $field = Array (' pid ' = ' pid ', ' id ' = ' cid ', ' children ' = ' children ')); Echo ' < Pre> '; Print_r ($tree);? >