2 回答

TA貢獻2011條經驗 獲得超2個贊
問題是,正如你所擁有的
return printAll($v['children'], "{$value}.", $values);
在整個過程中,這將忽略后續元素中的任何其他項目。
一個快速修復方法是將新值添加到當前值中,并在例程結束時返回 1...
$values += printAll($v['children'], "{$value}.", $values);

TA貢獻1850條經驗 獲得超11個贊
您需要刪除return printAll(...)并將值添加到變量中。否則它將停止在第一個具有'children'
<?php
function printAll($a, $level = '', $values = []) {
foreach($a as $v) {
$values[] = $value = "{$level}{$v['id']}";
if(!empty($v['children'])) {
//Just remove this return and add to the variable you already have.
$values = printAll($v['children'], "{$value}.", $values);
}
}
return $values;
}
$a = json_decode('[{"id":1,"children":[{"id":2},{"id":5,"children":[{"id":3}]}]},{"id":4}]',true);
var_dump(printAll($a));
- 2 回答
- 0 關注
- 299 瀏覽
添加回答
舉報