21,887
社区成员
发帖
与我相关
我的任务
分享
$data=Array
(
[1] => Array
(
[id] => 1
[name] => aaa
[pid] => 0
[son] => Array
(
[2] => Array
(
[id] => 2
[name] => a1
[pid] => 1
)
[3] => Array
(
[id] => 3
[name] => a2
[pid] => 1
)
[4] => Array
(
[id] => 4
[name] => a3
[pid] => 1
)
[5] => Array
(
[id] => 5
[name] => a4
[pid] => 1
)
)
)
[6] => Array
(
[id] => 6
[name] => bbb
[pid] => 0
[son] => Array
(
[7] => Array
(
[id] => 7
[name] => b1
[pid] => 6
)
[8] => Array
(
[id] => 8
[name] => b2
[pid] => 6
)
)
)
[9] => Array
(
[id] => 9
[name] => ccc
[pid] => 0
[son] => Array
(
[10] => Array
(
[id] => 10
[name] => c1
[pid] => 9
)
)
)
[11] => Array
(
[id] => 11
[name] => ddd
[pid] => 0
)
);
function checked($data,$search,$id='id'){
foreach($data as $k=>$v){
if(in_array($v[$id], $search)){
$v['check'] = 'checked';
}
$arr[$k]=$v;
if(is_array($v['son'])) checked($v['son'],$search);
}
return $arr;
}
$arr=checked($data,array(6,8,11));
echo print_r($arr);
function checked($data,$search,$id='id'){
foreach($data as $k=>$v){
if(in_array($v[$id], $search)){
$v['check'] = 'checked';
}
$arr[$k]=$v;
if(isset($v['son']) && is_array($v['son'])) $arr[$k]['son'] = checked($v['son'],$search);
}
return $arr;
}
利用引用可简化代码function checked(&$data,$search,$id='id'){
foreach($data as $k=>&$v){
if(in_array($v[$id], $search)){
$v['check'] = 'checked';
}
if(isset($v['son']) && is_array($v['son'])) checked($v['son'],$search);
}
}
checked($data,array(6,8,11));
print_r($data);
Array
(
[1] => Array
(
[id] => 1
[name] => aaa
[pid] => 0
[son] => Array
(
[2] => Array
(
[id] => 2
[name] => a1
[pid] => 1
)
[3] => Array
(
[id] => 3
[name] => a2
[pid] => 1
)
[4] => Array
(
[id] => 4
[name] => a3
[pid] => 1
)
[5] => Array
(
[id] => 5
[name] => a4
[pid] => 1
)
)
)
[6] => Array
(
[id] => 6
[name] => bbb
[pid] => 0
[son] => Array
(
[7] => Array
(
[id] => 7
[name] => b1
[pid] => 6
)
[8] => Array
(
[id] => 8
[name] => b2
[pid] => 6
[check] => checked
)
)
[check] => checked
)
[9] => Array
(
[id] => 9
[name] => ccc
[pid] => 0
[son] => Array
(
[10] => Array
(
[id] => 10
[name] => c1
[pid] => 9
)
)
)
[11] => Array
(
[id] => 11
[name] => ddd
[pid] => 0
[check] => checked
)
)
<?php
$data=array
(
'1' => array
(
'id' => 1,
'name' => 'aaa',
'pid' => 0,
'son' => array
(
'2' => array
(
'id' => 2,
'name' => 'a1',
'pid' => 1,
),
'3' => array
(
'id' => 3,
'name' => 'a2',
'pid' => 1,
),
'4' => array
(
'id' => 4,
'name' => 'a3',
'pid' => 1,
),
'5' => array
(
'id' => 5,
'name' => 'a4',
'pid' => 1,
)
)
),
'6' => array
(
'id' => 6,
'name' => 'bbb',
'pid' => 0,
'son' => array
(
'7' => array
(
'id' => 7,
'name' => 'b1',
'pid' => 6,
),
'8' => array
(
'id' => 8,
'name' => 'b2',
'pid' => 6,
)
)
),
'9' => array
(
'id' => 9,
'name' => 'ccc',
'pid' => 0,
'son' => array
(
'10' => array
(
'id' => 10,
'name' => 'c1',
'pid' => 9,
)
)
),
'11' => array
(
'id' => 11,
'name' => 'ddd',
'pid' => 0
)
);
function checked(&$data,$search,$id='id'){
foreach($data as $k=>$v){
if(in_array($v[$id], $search)){
$data[$k]['check'] = 'checked';
}
if(isset($data[$k]['son']) && is_array($data[$k]['son'])){
checked($data[$k]['son'],$search);
}
}
}
checked($data,array(6,8,11));
print_r($data);
?>