1 回答

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
發(fā)生了 Stack Overflow 奇跡......我得到了一個(gè)遞歸代碼片段來(lái)處理第一遍!通常我要花一兩個(gè)小時(shí)才能寫出有用的東西。
我不知道我是否可以使它更緊/更好,或者它是否會(huì)在任何邊緣情況下失敗,但是:
它適用于您的樣本輸入
對(duì)我來(lái)說(shuō)現(xiàn)在是午夜,我累了,我必須在早上工作
實(shí)際上,只要結(jié)構(gòu)數(shù)組中存在相同級(jí)別的鍵,它就會(huì)同步遞歸地迭代每個(gè)數(shù)組并將條目數(shù)組的每個(gè)級(jí)別存儲(chǔ)到輸出數(shù)組。
代碼:(演示)
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 關(guān)注
- 165 瀏覽
添加回答
舉報(bào)