搜索并从多维数组中删除

4

如果我的值ID等于1,并且我想从数组中搜索并删除ID为1的元素。

Array (
[0] => Array
    (
        [id] => 1
    )
[1] => Array
    (
        [id] => 4
    )
[2] => Array
    (
        [id] => 5
    )
[3] => Array
    (
        [id] => 7
    )
)

新数组

Array (
[0] => Array
    (
        [id] => 4
    )
[1] => Array
    (
        [id] => 5
    )
[2] => Array
    (
        [id] => 7
    )
)

我正在使用search_array函数,因为它是多维数组,所以我认为它无法找到。有没有一种方法可以像上面那样搜索一个数组?

3个回答

10

如果你只是想检查单个值,为什么不使用foreach循环呢?

foreach ( $arr as $key => $value )
  {
    if ( $value['id'] == '1' )
      {
        unset( $arr[$key] );
      }
  }

1
如果我将for循环改为foreach循环,那就可以了。我自己尝试过,但是if语句写错了,所以才来这里发问。感谢你的回答! - Tim

5
另一种方法是(假设您正在过滤整数1的ID):
$filtered = array_filter($arr, function ($val) { return $val['id'] !== 1; });

请注意,上述内容使用了巧妙命名的array_filter函数,并使用匿名函数作为回调函数(用于过滤;如果需要,您可以使用“普通”命名函数,或者如果您还没有使用PHP 5.3)。


我如何将这种方法应用于三维数组? - Ben

2
$arr = array(/* your array */);
$remove = 1;

foreach($arr as $key=>$val){
   if($val['id'] == $remove){
      unset($arr[$key]);
   }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接