無限級分類,級分類
public function getlist($pid = 0, &$result=array(), $spac = 0){
$spac += 2;
$list = M('liuyan')->where('pid='.$pid)->select();
foreach($list as $val){
$val['content'] = str_repeat('',$spac).$val['content'];
$result[] = $val;
$this->getlist($val['id'], $result, $spac);
}
return $result;
}
function
genTree(
$items
,
$id
=
'id'
,
$pid
=
'pid'
,
$son
=
'children'
){
$tree
=
array
();
$tmpMap
=
array
();
foreach
(
$items
as
$item
) {
$tmpMap
[
$item
[
$id
]] =
$item
;
}
foreach
(
$items
as
$item
) {
if
(isset(
$tmpMap
[
$item
[
$pid
]])) {
$tmpMap
[
$item
[
$pid
]][
$son
][] = &
$tmpMap
[
$item
[
$id
]];
}
else
{
$tree
[] = &
$tmpMap
[
$item
[
$id
]];
}
}
unset(
$tmpMap
);
return
$tree
;
}
$items1
=
array
(
array
(
'id'
=> 1,
'pid'
=> 0,
'name'
=>
'一級11'
),
array
(
'id'
=> 11,
'pid'
=> 0,
'name'
=>
'一級12'
),
array
(
'id'
=> 2,
'pid'
=> 1,
'name'
=>
'二級21'
),
array
(
'id'
=> 10,
'pid'
=> 11,
'name'
=>
'二級22'
),
array
(
'id'
=> 3,
'pid'
=> 1,
'name'
=>
'二級23'
),
array
(
'id'
=> 12,
'pid'
=> 11,
'name'
=>
'二級24'
),
array
(
'id'
=> 9,
'pid'
=> 1,
'name'
=>
'二級25'
),
array
(
'id'
=> 14,
'pid'
=> 1,
'name'
=>
'二級26'
),
array
(
'id'
=> 4,
'pid'
=> 9,
'name'
=>
'三級31'
),
array
(
'id'
=> 6,
'pid'
=> 9,
'name'
=>
'三級32'
),
array
(
'id'
=> 7,
'pid'
=> 4,
'name'
=>
'四級41'
),
array
(
'id'
=> 8,
'pid'
=> 4,
'name'
=>
'四級42'
),
array
(
'id'
=> 5,
'pid'
=> 4,
'name'
=>
'四級43'
),
array
(
'id'
=> 13,
'pid'
=> 4,
'name'
=>
'四級44'
),
array
(
'id'
=> 15,
'pid'
=> 8,
'name'
=>
'五級51'
),
array
(
'id'
=> 16,
'pid'
=> 8,
'name'
=>
'五級52'
),
array
(
'id'
=> 17,
'pid'
=> 8,
'name'
=>
'五級53'
),
array
(
'id'
=> 18,
'pid'
=> 16,
'name'
=>
'六級64'
),
);
var_dump(genTree(
$items1
));