2 回答

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

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊
您需要?jiǎng)h除return printAll(...)并將值添加到變量中。否則它將停止在第一個(gè)具有'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 關(guān)注
- 320 瀏覽
添加回答
舉報(bào)