【问题标题】:How to unset or remove an array from a mult dimension array when you only know the key of the child but not the parent当您只知道孩子的键而不知道父母的键时,如何从多维数组中取消设置或删除数组
【发布时间】:2014-02-01 05:41:37
【问题描述】:

我正在做一个索引项目。一切都很好,直到我必须更新索引文件。我想当一个网站被管理员删除时,它的所有索引发布列表都应该被删除。请帮助我指出从多维数组中删除数组的写入方式。

给定一个像下面这样的数组,3 是数据库中索引网站的 id。管理员删除该网站。我还希望能够从我的索引中删除它的发布参考。

Array
(
[mr] => Array
   (
        [3] => Array
            (
                [frequency] => 3
                [position] => Array
                    (
                        [0] => 16
                        [1] => 94
                        [2] => 110
                    )

            )

    )

[smith] => Array
    (
        [3] => Array
            (
                [frequency] => 3
                [position] => Array
                    (
                        [0] => 17
                        [1] => 95
                        [2] => 111
                    )

            )

    )
)

让我们称这个数组为 $index。 有人如何取消设置或删除所有键为 3 的数组。这意味着我将留下这样的数组。

Array
(
[mr] => Array
(

 )

[smith] => Array
(

)
)

【问题讨论】:

    标签: php arrays unset dimensional


    【解决方案1】:

    很简单。

    循环遍历第一级数组,然后循环遍历每个第二级数组。如果二级key为3,则设置一级数组的值为空数组。

    foreach($array as $key => $val) {
        foreach($val as $key2 => $val2) {
            if($key2 == 3) { unset($array[$key][$key2]); }
        }
    }
    

    根据以下评论进行编辑。

    【讨论】:

    • 如果第二层有更多数组会怎样?您将全部取消设置。更好的解决方案是将$array[$key] = array(); 替换为unset($array[$key][$key2]);
    • 第二次查看该问题时,我假定每个第二个索引只存在一个数组。我已经更改了我的代码。
    • 您之前的答案只有在只有一个数组时才有效;现在这两种情况都适用。
    • 这将清空整个 $array[$key] 记住它的索引可能有其他键可以说有另一个索引 webist 的 id 4 另一个 id 5。我们不想删除它们但是而是针对特定的。比如三个。
    • 是的,就像我说的那样,出于某种原因,我假设每个第一级数组值只会包含一个进一步的值。代码已更改以允许这样做!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 2016-10-18
    • 2019-04-04
    • 2015-03-28
    相关资源
    最近更新 更多