1
我想創建一個函數,它返回從設置節點返回到根值的完整路徑。我試圖做一個遞歸函數,但完全沒有運氣。什麼是適當的方式來做到這一點?我認爲遞歸函數是唯一的方法?PHP:遞歸數組函數
這裏的數組:
Array
(
[0] => Array
(
[id] => 1
[name] => Root category
[_parent] =>
)
[1] => Array
(
[id] => 2
[name] => Category 2
[_parent] => 1
)
[2] => Array
(
[id] => 3
[name] => Category 3
[_parent] => 1
)
[3] => Array
(
[id] => 4
[name] => Category 4
[_parent] => 3
)
)
我希望我的函數輸出得到4的節點ID#完整路徑時,其結果是:
Array
(
[0] => Array
(
[id] => 1
[name] => Root category
[_parent] =>
)
[1] => Array
(
[id] => 3
[name] => Category 3
[_parent] => 1
)
[2] => Array
(
[id] => 4
[name] => Category 4
[_parent] => 3
)
)
我的遞歸技能出了名的壞榜樣:
function recursive ($id, $array) {
$innerarray = array();
foreach ($array as $k => $v) {
if ($v['id'] === $id) {
if ($v['_parent'] !== '') {
$innerarray[] = $v;
recursive($v['id'], $array);
}
}
}
return $innerarray;
}
爲什麼不發表你的代碼,所以我們可以看看?也許你比你想象的更接近。 – FrustratedWithFormsDesigner 2010-06-02 18:26:40
更新了帖子! – Industrial 2010-06-02 18:41:14
沒有必要使用遞歸。將您的'foreach'搜索添加到我的下面的代碼中以搜索父ID。如果你必須使用遞歸,你的代碼的問題是你沒有保留遞歸函數的返回值,你需要將它附加到你的$ innerarray – Oliver 2010-06-02 18:54:27