php阵列未设置无法正常工作

时间:2013-07-06 18:35:02

标签: php multidimensional-array

我有一个名为“values”的多维数组。这就是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即使在未设置后也看起来相同。我认为我的阵列没有设置不起作用。有人能告诉我我的代码有什么问题吗?

3 个答案:

答案 0 :(得分:6)

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

 foreach ($values as $value) {

 foreach ($values as &$value) {

有关相关文档,请参阅here

答案 1 :(得分:3)

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

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

答案 2 :(得分:0)

foreach ($values as &$value)