通过元素指针(别名)删除数组元素
是否可以通过指针删除数组元素?
多维数组:
$list = array(
1=>array(
2=>array('entry 1'),
3=>array('entry 2')
),
4=>'entry 3',
5=>array(
6=>array('entry 4')
)
);
参考数组:
$refs = array(
1=>&$list[1],
2=>&$list[1][2],
3=>&$list[1][3],
4=>&$list[4],
5=>&$list[5],
6=>&$list[5][6]
);
参考数组仅包含指向多维数组元素的指针(别名)。 现在我想从 $list 数组中删除(取消链接)元素。
通过使用,
$n=3;
unset($refs[$n])
但PHP仅删除指针。
Is it possible to remove an array element by a pointer?
Multidimensional array:
$list = array(
1=>array(
2=>array('entry 1'),
3=>array('entry 2')
),
4=>'entry 3',
5=>array(
6=>array('entry 4')
)
);
Reference array:
$refs = array(
1=>&$list[1],
2=>&$list[1][2],
3=>&$list[1][3],
4=>&$list[4],
5=>&$list[5],
6=>&$list[5][6]
);
The reference array contains only pointer (alias) to the multidimensional array elements. Now I want to delete (unlink) the elements from the $list array.
By using,
$n=3;
unset($refs[$n])
But PHP only deletes the pointer.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的引用数组似乎是错误的:
但是您的
$list
数组不包含元素2
、3
和6
。 因此$refs
数组应该看起来像:根据您的要求,您可以执行以下操作:
但这会将
$list[1][2]
保留为数组元素包含NULL
。编辑:
要从源数组
$list
中删除元素,您必须求助于一些递归搜索函数(未经测试 - 可能需要一些调整):Your reference array seems to be wrong:
But your
$list
array does not contain elements2
,3
and6
. So the$refs
array should rather look like:Depending on what your requirements are you could do:
But this will leave
$list[1][2]
as an array element containingNULL
.EDIT:
To remove the element from it's source array
$list
you have to resort to some recursive search function (untested - may need some tweaking):是否可以存储对“父”元素和索引的引用,例如
Would it be possible to store a reference to the "parent" element and the index, like