1 回答
TA贡献1815条经验 获得超13个赞
发生了 Stack Overflow 奇迹......我得到了一个递归代码片段来处理第一遍!通常我要花一两个小时才能写出有用的东西。
我不知道我是否可以使它更紧/更好,或者它是否会在任何边缘情况下失败,但是:
它适用于您的样本输入
对我来说现在是午夜,我累了,我必须在早上工作
实际上,只要结构数组中存在相同级别的键,它就会同步递归地迭代每个数组并将条目数组的每个级别存储到输出数组。
代码:(演示)
function truncateRecursive($structure, $entry) {
$output = [];
while (($structureKey = key($structure)) !== null && ($entryKey = key($entry)) !== null) {
$output[$entryKey] = !is_array($entry[$entryKey])
? $entry[$entryKey]
: truncateRecursive($structure[$structureKey], $entry[$entryKey]);
unset($structure[$structureKey], $entry[$entryKey]);
}
return $output;
}
var_export(truncateRecursive($structure, $entry));
输出:
array (
157 =>
array (
'id' => '157',
'username' => 'test1',
'children' =>
array (
0 =>
array (
'id' => '158',
'username' => 'test1',
'children' =>
array (
0 =>
array (
'id' => '159',
'username' => 'test2',
'children' =>
array (
0 =>
array (
'id' => '160',
'username' => 'test3',
'children' =>
array (
),
),
),
),
),
),
),
),
)
- 1 回答
- 0 关注
- 136 浏览
添加回答
举报