2 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以通過將引用存儲(chǔ)在數(shù)組的引用中來完成第一個(gè),如下所示:
$all = [
'nested_arrays' => [
'id0' => [
'id8' => [
'hello'
],
'id3' => [
'id6' => 'apple'
]
]
],
];
$all['references']['id0'] = &$all['nested_arrays']['id0'];
$all['references']['id8'] = &$all['nested_arrays']['id0']['id8'];
$all['references']['id6'] = &$all['nested_arrays']['id0']['id3']['id6'];
然后檢查輸出:
echo '<pre>'. print_r($all['references']['id8'], true) . '</pre>';
echo '<pre>'. print_r($all['references']['id6'], true) . '</pre>';
輸出:
Array
(
[0] => hello
)
apple
但是你不能對(duì)此使用 unset ,因?yàn)槟侵粫?huì)刪除數(shù)組的元素,而不是它指向的數(shù)組元素。

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
我寧愿創(chuàng)建一個(gè)實(shí)現(xiàn)迭代器接口的對(duì)象。對(duì)象本質(zhì)上是通過引用傳遞的。
$id0 = new MyIterator($array);
$all = [
'nested_arrays' => [
'id0' => $id0
],
'references' => [
'id0' => $id0
]
];
替代方法是遞歸迭代“nested_array”并填充“references”數(shù)組
foreach ($nested as $k => $v) {
// Custom recursive iteration
...
$all['references'][$k] = &$v;
}
通常,您不能通過取消設(shè)置引用來刪除原始值或?qū)ο蟆V挥挟?dāng)指向該值的所有指針都被取消設(shè)置時(shí),原始值才會(huì)被銷毀。您將不得不遍歷數(shù)組。
- 2 回答
- 0 關(guān)注
- 180 瀏覽
添加回答
舉報(bào)