21,886
社区成员
发帖
与我相关
我的任务
分享
$a_list = array(
1=>array('ID'=>1, 'PARENT'=>0, 'NAME'=>'祖父'),
2=>array('ID'=>2, 'PARENT'=>1, 'NAME'=>'父亲'),
3=>array('ID'=>3, 'PARENT'=>1, 'NAME'=>'叔伯'),
4=>array('ID'=>4, 'PARENT'=>2, 'NAME'=>'自己'),
5=>array('ID'=>5, 'PARENT'=>4, 'NAME'=>'儿子')
);
$ar_ID_NAME = $ar_ID_PARENT = $ar_ID_CHILDREN = array();
foreach($a_list as $k => $v) {
$ar_ID_NAME[$v['ID']] = $v['NAME'];
$ar_ID_PARENT[$v['ID']] = $v['PARENT'];
$ar_ID_CHILDREN[$v['PARENT']][] = $v['ID'];
}
$needle = $tmp = array_search('自己', $ar_ID_NAME);
$result = '自己';
while($ar_ID_PARENT[$tmp] != 0) {
$result = $ar_ID_NAME[$ar_ID_PARENT[$tmp]].','.$result;
$tmp = $ar_ID_PARENT[$tmp];
}
while(isset($ar_ID_CHILDREN[$needle])) {
$result .= ','.$ar_ID_NAME[$ar_ID_CHILDREN[$needle][0]];
$needle = $ar_ID_CHILDREN[$needle][0];
}
echo $result;
$a_list = array(
1=>array('ID'=>1, 'PARENT'=>0, 'NAME'=>'祖父'),
2=>array('ID'=>2, 'PARENT'=>1, 'NAME'=>'父亲'),
3=>array('ID'=>3, 'PARENT'=>1, 'NAME'=>'叔伯'),
4=>array('ID'=>4, 'PARENT'=>2, 'NAME'=>'自己'),
5=>array('ID'=>5, 'PARENT'=>4, 'NAME'=>'儿子')
);
$s = '自己';
$result = '';
//查找索引值
function k($s, $ar) {
foreach($ar as $k => $v) if ($v['NAME'] == $s) return $k;
}
$searchID = $tmpID = k($s, $a_list);;
//查找父节点链
while($a_list[$a_list[$tmpID]['PARENT']]['PARENT'] != 0) {
$result = $a_list[$a_list[$tmpID]['PARENT']]['NAME'].','.$result;
$tmpID = $a_list[$tmpID]['PARENT'];
}
$result = '祖父,'.$result.$s;
//echo $result;
//递归查找子节点
function child($id, $ar) {
global $result;
foreach($ar as $k => $v) {
if ($v['PARENT'] == $id) {
$result .= ','.$v['NAME'];
child($v['ID'], $ar);
}
}
}
child($searchID, $a_list);
echo $result;