【问题标题】:PHP unset parts of a nested arrayPHP未设置嵌套数组的部分
【发布时间】:2012-10-06 23:55:15
【问题描述】:

试图处理一个数组并在更大的数组集中删除一个特定的关联数组。我现在拥有的代码可以在 for 循环中本地删除特定部分,但不会影响原始的 $cursor 数组。

foreach($cursor as $key) {

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

        if ($value == 'user'){

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

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

【问题讨论】:

  • 是顶级数组光标吗?

标签: php arrays unset


【解决方案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']);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-28
      • 2017-06-19
      • 2021-04-09
      • 2015-11-14
      • 2012-05-02
      • 2011-07-23
      • 2021-10-17
      相关资源
      最近更新 更多