次のコードが与えられた場合:
$tree = array();
$node =& $tree[];
// imagine tons of code that populates $tree here
参照によってZVAL$node
ポイントを完全に削除するにはどうすればよいですか? それは可能ですか?
を使用するunset()
と、参照のみが破棄され、ノード$tree
自体は破棄されません。
unset($node);
print_r($tree);
// outputs:
Array
(
[0] =>
)
これが の予想される動作でunset($reference)
あり、ZVAL refcounter がどのように機能するかも知っています。
しかし、特定のコーナーケースで処理した後、そのノードを削除する必要があります。
どういうわけか正しい配列インデックスを見つけて、配列要素を直接設定解除できますunset($tree[$node_index])
か?
免責事項: 上記の例は縮小され、分離されています。実際には、ストリームとして表示される非常に醜いネストされたテーブル データ構造の複雑なパーサーを変更しています。コードは後方参照としてポインターを多用しているため、コード全体のリファクタリングは避けたいと考えています。