给出以下代码:
$tree = array();
$node =& $tree[];
// imagine tons of code that populates $tree here
如何通过引用$node
完全删除 ZVAL点?这甚至可能吗?
使用unset()
,只有引用被破坏,而不是节点$tree
本身:
unset($node);
print_r($tree);
// outputs:
Array
(
[0] =>
)
我知道这是预期的行为,unset($reference)
我也知道 ZVAL refcounter 的工作原理。
但我真的需要在特定极端情况下处理后删除该节点。
我可以以某种方式找到正确的数组索引并直接取消设置数组元素unset($tree[$node_index])
吗?
免责声明:上面的例子是缩小和隔离的。实际上,我正在为一个非常丑陋的嵌套表数据结构修改一个复杂的解析器,它以流的形式呈现。该代码大量使用指针作为反向引用,我想避免重构整个代码。