功能:给定一个二维数组如:
$items = array(
1 => array(‘id’ => 1, ‘pid’ => 0, ‘name’ => ‘江西省’),
2 => array(‘id’ => 2, ‘pid’ => 1, ‘name’ => ‘黑龙江省’),
3 => array(‘id’ => 3, ‘pid’ => 2, ‘name’ => ‘南昌市’),
4 => array(‘id’ => 4, ‘pid’ => 3, ‘name’ => ‘曲靖市’),
6 => array(‘id’ => 6, ‘pid’ => 1, ‘name’ => ‘曲靖市2’),
7 => array(‘id’ => 10, ‘pid’ => 3, ‘name’ => ‘曲靖市2’),
);
给定数组的id值,递归次数count,找出它的对应父类和子类,代码实现如下:
//向下查找
function select_down($data, $id,$count){
static $ret = array();
static $num=0;
$num++;
if($num>$count){
return $ret;
}
$pid='';
foreach ($data as $one_data){
if($one_data['id']==$id){
$pid=$one_data['id'];
}
}
if(!empty($pid)){
foreach ($data as $k => $v)
{
if($v['pid'] == $pid)
{
$ret[] = $v;
select_down($data, $v['id'],$count);
}
}
}
return $ret;
}
//向上查找
function select_up($data, $id,$count){
static $ret = array();
static $num=0;
$num++;
if($num>$count){
return $ret;
}
$fater_id='';
foreach ($data as $one_data){
if($one_data['id']==$id){
$fater_id=$one_data['pid'];
}
}
if(!empty($fater_id)){
foreach ($data as $k => $v)
{
if($v['id'] == $fater_id)
{
$ret[] = $v;
select_up($data, $v['id'],$count);
}
}
}
return $ret;
}