PHP取消设置嵌套数组的部分

PHP取消设置嵌套数组的部分,php,arrays,unset,Php,Arrays,Unset,正在尝试处理数组并删除较大数组集中的特定关联数组。我现在使用的代码可以在for循环中本地删除特定部分,但不会影响原始的$cursor数组 foreach($cursor as $key) { foreach($key as $value => $k){ if ($value == 'user'){ unset($k['confinfo']); } } } 这是一个全局变量问题吗?如何取消设置原始变量?通过

正在尝试处理数组并删除较大数组集中的特定关联数组。我现在使用的代码可以在for循环中本地删除特定部分,但不会影响原始的
$cursor
数组

foreach($cursor as $key) {

    foreach($key as $value => $k){

        if ($value == 'user'){

            unset($k['confinfo']);
        }
    }   
}

这是一个全局变量问题吗?如何取消设置原始变量?

通过引用迭代原始数组:

foreach($cursor as &$key) // added &
foreach($cursor as &$key) {
    // ...
}
unset($key);
重要的是要注意,在执行此操作时,最好按照循环执行
unset
,以销毁引用:

foreach($cursor as &$key) // added &
foreach($cursor as &$key) {
    // ...
}
unset($key);

就我个人而言,我觉得这有点难看(在PHP课程中也是如此),但这样可以消除以后重用名称
$key
并造成各种“有趣”效果的风险。

问题是,循环中得到的
$k
不是
$cursor
包含的原始数组,这只是一个副本,一旦循环进入下一轮,它就会被销毁。要真正从
$cursor
中删除
confinfo
索引,您需要从
$cursor
开始,然后向下引用

替换

unset($k['confinfo']);


它不像另一个答案那么短,但它更好地显示了正在发生的事情,因此更容易在以后调试和扩展。

是顶级数组光标吗?