尝试处理数组并删除较大数组中的特定关联数组。我现在的代码在for循环中本地删除特定部分,但不影响原始的$cursor
数组。
foreach($cursor as $key) {
foreach($key as $value => $k){
if ($value == 'user'){
unset($k['confinfo']);
}
}
}
这是一个GLOBAL变量问题吗?如何取消设置原始变量?
答案 0 :(得分:3)
通过引用迭代原始数组:
foreach($cursor as &$key) // added &
值得注意的是,无论何时执行此操作,使用unset
跟踪循环以消除引用都是非常好主意:
foreach($cursor as &$key) {
// ...
}
unset($key);
就我个人而言,我觉得这有点难看(PHP的课程标准),但这样你就消除了以后重用名字$key
并造成各种“有趣”效果的风险。
答案 1 :(得分:3)
问题是你在循环中得到的$k
不是$cursor
包含的原始数组,它只是一个循环进入下一轮就会被破坏的副本。要从confinfo
中真正删除$cursor
索引,您需要从$cursor
开始,然后参考工作。
替换
unset($k['confinfo']);
与
unset($cursor[$key][$value]['confinfo']);
它没有其他答案那么短,但它更好地显示了正在发生的事情,因此更容易调试和扩展。