1

我有一个称为“值”的多维数组。这就是var_dump($values)现在的样子。

array(1) { 
    [0]=> array(3) { 
        ["content"]=> array(1) { 
            ["items"]=> array(4) { 
                [0]=> string(4) "3121" 
                [1]=> string(4) "3116" 
                [2]=> string(4) "3115" 
                [3]=> string(4) "3114" 
            } 
        } 
        ["options"]=> array(8) { 
            ["title"]=> string(7) "inherit" 
            ["size"]=> string(4) "tiny" 
            ["orderby"]=> string(4) "date" 
            ["order"]=> string(4) "desc" 
            ["filter"]=> string(8) "category" 
            ["pagination"]=> bool(false) 
            ["per_page"]=> int(12) 
            ["content"]=> array(3) { 
                [0]=> string(5) "title" 
                [1]=> string(7) "excerpt" 
                [2]=> string(4) "tags" 
            } 
        } 
        ["__version"]=> string(5) "2.3.1" 
    }
}

这是我用来取消设置值的代码

 //before unset
    var_dump($values);

    $ID = "3121";
    foreach ($values as $value) {
                    foreach($value['content']['items'] as $key => $val) {               
                    if($val == $ID) {
                     unset($value['content']['items'][$key]);
                     }
                    }
        }

   //after unset
    var_dump($values);

即使未设置,我的 var_dump 看起来也一样。我认为我的阵列未设置不起作用。有人可以告诉我我的代码有什么问题吗?

4

3 回答 3

6

在 php 中,数组是按值传递而不是按引用更改

 foreach ($values as $value) {

 foreach ($values as &$value) {

有关相关文档,请参见此处

于 2013-07-06T18:37:29.173 回答
3

您没有$key在 for 循环中放置变量,并且要更改值,您必须使用引用

foreach ($values as &$value) {
  foreach($value['content']['items'] as $key => $val) {               
      if($val == $ID) {
          unset($value['content']['items'][$key]);
      }
  }
}
于 2013-07-06T18:37:26.390 回答
0

foreach ($values as &$value)

于 2013-07-06T18:39:17.433 回答