PHP未设置嵌套数组的部分
Posted
技术标签:
【中文标题】PHP未设置嵌套数组的部分【英文标题】:PHP unset parts of a nested array 【发布时间】:2012-10-06 23:55:15 【问题描述】:试图处理一个数组并在更大的数组集中删除一个特定的关联数组。我现在拥有的代码可以在 for 循环中本地删除特定部分,但不会影响原始的 $cursor
数组。
foreach($cursor as $key)
foreach($key as $value => $k)
if ($value == 'user')
unset($k['confinfo']);
这是一个全局变量问题吗?如何取消设置原始变量?
【问题讨论】:
是***数组光标吗? 【参考方案1】:通过引用遍历原始数组:
foreach($cursor as &$key) // added &
重要的是要注意,无论何时执行此操作,非常最好使用unset
跟随循环来销毁引用:
foreach($cursor as &$key)
// ...
unset($key);
我个人觉得这有点难看(与 php 课程相当),但这样就消除了以后重复使用名称 $key
并导致各种“有趣”效果的风险。
【讨论】:
【参考方案2】:问题是你在循环中得到的$k
不是$cursor
包含的原始数组,它只是一个副本,一旦循环进入下一轮就会被销毁。要真正从$cursor
中删除confinfo
索引,您需要从$cursor
开始,然后向下引用工作。
替换
unset($k['confinfo']);
与
unset($cursor[$key][$value]['confinfo']);
它不像其他答案那么短,但它可以更好地显示正在发生的事情,因此以后更容易调试和扩展。
【讨论】:
以上是关于PHP未设置嵌套数组的部分的主要内容,如果未能解决你的问题,请参考以下文章
JAVA。我嵌套的for循环,我从另一个数组插入数组中的整数跳过整个部分,除了第一个和最后一个值