在php中遞迴查詢節點,該如何處理

來源:互聯網
上載者:User
在php中遞迴查詢節點
部門樹下,我已經查詢出所有的部門樹節點id,我想根據前台傳過來的根節點id,在php後台中遞迴出所有前台傳過來的根節點的子節點,我想問問這種方式可行不,如果可行,應該怎麼實現?

------解決方案--------------------

1.樣本1
function find_child($ar, $id='id', $pid='pid') {
foreach($ar as $v) $t[$v[$id]] = $v;
foreach ($t as $k => $item){
if( $item[$pid] ) {
$t[$item[$pid]]['child'][] =&$t[$k];
unset($t[$k]);
}
}
return $t;
}
$data = array(
array('ID'=>1,'PARENT'=>0,'NAME'=>'kobe'),
array('ID'=>2,'PARENT'=>0,'NAME'=>'jama'),
array('ID'=>3,'PARENT'=>1,'NAME'=>'kobe1'),
array('ID'=>4,'PARENT'=>2,'NAME'=>'jama1'),
array('ID'=>5,'PARENT'=>0,'NAME'=>'lizhi'),
array('ID'=>6,'PARENT'=>1,'NAME'=>'kobe2'),
);

$c = find_child($data, 'ID', 'PARENT');
echo '
';
print_r($c);
?>


2.樣本2

function find_child($ar, $id='id', $pid='pid') {
foreach($ar as $v) $t[$v[$id]] = $v;
foreach ($t as $k => $item){
if( $item[$pid] ) {
$t[$item[$pid]]['child'][] =&$t[$k];
unset($t[$k]);
}
}
return $t;
}
$data = array(
array('ID'=>1,'PARENT'=>0,'NAME'=>'kobe'),
array('ID'=>2,'PARENT'=>0,'NAME'=>'jama'),
array('ID'=>3,'PARENT'=>1,'NAME'=>'kobe1'),
array('ID'=>4,'PARENT'=>2,'NAME'=>'jama1'),
array('ID'=>5,'PARENT'=>0,'NAME'=>'lizhi'),
array('ID'=>6,'PARENT'=>1,'NAME'=>'kobe2'),
);

$c = find_child($data, 'ID', 'PARENT');
echo '
';
print_r($c);
?>

------解決方案--------------------

$arr = array(
1=>array('id'=>'1','name'=>'1','pid'=>'0'),
2=>array('id'=>'2','name'=>'2','pid'=>'0'),
3=>array('id'=>'3','name'=>'11','pid'=>'1'),
4=>array('id'=>'4','name'=>'22','pid'=>'2'),
);
function tree($arr){
$t = array();
foreach($arr as $v){
if (isset($arr[$v['pid']])){
$arr[$v['pid']]['child'][] = &$arr[$v['id']];
}else{
$t[] = &$arr[$v['id']];
}
}
return $t;
}
echo '
';print_r(tree($arr));
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.