通过值从php中的多维数组中删除项目

时间:2014-11-13 07:09:59

标签: php arrays multidimensional-array

我有一个多维数组$array,如下所示:

array (size=3)
  0 => 
    array (size=1)
      0 => 
        object(stdClass)[500]
          public 'id' => int 2
          public 'first_name' => string 'Mary' (length=4)
          public 'last_name' => string 'Sweet' (length=5)
  1 => 
    array (size=1)
      0 => 
        object(stdClass)[501]
          public 'id' => int 9
          public 'first_name' => string 'Joe' (length=3)
          public 'last_name' => string 'Bob' (length=3)
  2 => 
    array (size=1)
      0 => 
        object(stdClass)[502]
          public 'id' => int 1
          public 'first_name' => string 'Shag' (length=4)
          public 'last_name' => string 'Well' (length=4)

我希望能够通过搜索值(而不是索引)来删除数组中的一个项目。

因此,我想删除数组中具有' Joe' first_name 属性的项目。

因此,如果我删除它,数组将如下所示:

array (size=2)
  0 => 
    array (size=1)
      0 => 
        object(stdClass)[500]
          public 'id' => int 2
          public 'first_name' => string 'Mary' (length=4)
          public 'last_name' => string 'Sweet' (length=5)
  1 => 
    array (size=1)
      0 => 
        object(stdClass)[502]
          public 'id' => int 1
          public 'first_name' => string 'Shag' (length=4)
          public 'last_name' => string 'Well' (length=4)

我怎么能这样做?感谢。

1 个答案:

答案 0 :(得分:2)

是的,你可以在这种情况下使用foreach。它会工作得很好。只需使用你的搜索字符串针,并在循环中添加一个if比较对象属性firstname和needle:

$first_name_search = 'Joe';
foreach ($array as $key => $value) {
    $value = reset($value); // get that index 0 which is nested 
    if($value->first_name == $first_name_search) {
        unset($array[$key]);
    }
}