Unlimited classification-dummies
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
();
// Formatted tree
$tmpMap
=
array
();
// Temporary flat data
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'
=>
'Level 1 11'
),
array
(
'id'
=> 11,
'pid'
=> 0,
'name'
=>
'Level 1 12'
),
array
(
'id'
=> 2,
'pid'
=> 1,
'name'
=>
'Level 2 21'
),
array
(
'id'
=> 10,
'pid'
=> 11,
'name'
=>
'Level 2 22'
),
array
(
'id'
=> 3,
'pid'
=> 1,
'name'
=>
'Level 2 23'
),
array
(
'id'
=> 12,
'pid'
=> 11,
'name'
=>
'Level 2 24'
),
array
(
'id'
=> 9,
'pid'
=> 1,
'name'
=>
'Level 2 25'
),
array
(
'id'
=> 14,
'pid'
=> 1,
'name'
=>
'Level 2 26'
),
array
(
'id'
=> 4,
'pid'
=> 9,
'name'
=>
'Level 3 31'
),
array
(
'id'
=> 6,
'pid'
=> 9,
'name'
=>
'Level 3 32'
),
array
(
'id'
=> 7,
'pid'
=> 4,
'name'
=>
'Level 4 41'
),
array
(
'id'
=> 8,
'pid'
=> 4,
'name'
=>
'Level 4 42'
),
array
(
'id'
=> 5,
'pid'
=> 4,
'name'
=>
'Level 4 43'
),
array
(
'id'
=> 13,
'pid'
=> 4,
'name'
=>
'Level 4 44'
),
array
(
'id'
=> 15,
'pid'
=> 8,
'name'
=>
Level 5 51'
),
array
(
'id'
=> 16,
'pid'
=> 8,
'name'
=>
'Level 5 52'
),
array
(
'id'
=> 17,
'pid'
=> 8,
'name'
=>
Level 5 53'
),
array
(
'id'
=> 18,
'pid'
=> 16,
'name'
=>
'Level 6 64'
),
);
var_dump(genTree(
$items1
));