Php 删除多维数组中value=somevalue的数组子级

Php 删除多维数组中value=somevalue的数组子级,php,arrays,Php,Arrays,我有这样一个多维数组$membergroups: Array ( [0] => Array ( [id] => 1645819602 [name] => Oryza NurFa [first_name] => Oryza [last_name] => NurFa [work] => MAN 2 Yogyakarta ) [1] => Array ( [i

我有这样一个多维数组
$membergroups

Array ( [0] => 
    Array ( [id] => 1645819602 
        [name] => Oryza NurFa 
        [first_name] => Oryza 
        [last_name] => NurFa 
        [work] => MAN 2 Yogyakarta ) 
    [1] => 
    Array ( [id] => 100000251643877 
        [name] => Lathif Pambudi 
        [first_name] => Muhammad Lathif 
        [last_name] => Pambudi 
        [work] => Omah TI ) 
    [2] => 
    Array ( [id] => 1152078197 
        [name] => Novantio Bangun 
        [first_name] => Novantio 
        [last_name] => Bangun 
        [work] => Pertamina))
如何删除具有特定值的子数组之一。例如,我想删除一个内部有
[id]=>100000251643877
的数组?因此,输出将是:

Array ( [0] => 
        Array ( [id] => 1645819602 
            [name] => Oryza NurFa 
            [first_name] => Oryza 
            [last_name] => NurFa 
            [work] => MAN 2 Yogyakarta ) 
        [1] => 
        Array ( [id] => 1152078197 
            [name] => Novantio Bangun 
            [first_name] => Novantio 
            [last_name] => Bangun 
            [work] => Pertamina))
以下是我的php代码,但它不起作用:

if (($key = array_search($user_fbid, $membergroups)) !== false) {
   unset($membergroups[$key]);
}

任何帮助都将不胜感激。谢谢

您可以使用
array\u列
,但只能用于
php>=5.5

if (($key = array_search($user_fbid, array_column( $membergroups, 'id') ) !== false) {
   unset($membergroups[$key]);
}
array\u column($membergroups,'id')
在membergroup多维数组中搜索id列,并返回一个数组,该数组包含具有id键的所有行值条目


array\u column->

您可以使用
array\u column
,但只能用于
php>=5.5

if (($key = array_search($user_fbid, array_column( $membergroups, 'id') ) !== false) {
   unset($membergroups[$key]);
}
array\u column($membergroups,'id')
在membergroup多维数组中搜索id列,并返回一个数组,该数组包含具有id键的所有行值条目


数组\u列->

在整个数组中循环:

foreach ($membergroups as $idx => $group) {
  if ($group['id'] === $user_fbid) {
    unset($membergrouops[$idx]);
    break;
  }
}

在整个阵列中循环:

foreach ($membergroups as $idx => $group) {
  if ($group['id'] === $user_fbid) {
    unset($membergrouops[$idx]);
    break;
  }
}

用foreach你可以做这样的工作

$id = 100000251643877;//Example
foreach($membergroups as $key => $value){
  if($value['id'] == $id){
    unset($membergroups[$key]);  
  }
}

用foreach你可以做这样的工作

$id = 100000251643877;//Example
foreach($membergroups as $key => $value){
  if($value['id'] == $id){
    unset($membergroups[$key]);  
  }
}
不要忘记删除键后合并数组以保持索引的连续性

$membergroups = array_merge($membergroups);
不要忘记删除键后合并数组以保持索引的连续性

$membergroups = array_merge($membergroups);

谢谢,阵列已成功删除。但是在它被删除后,另一个数组的索引不会改变。使用您的代码,在[1][2][3][4]之前,在[1][3][4]之后。。如何保持索引的顺序?您需要对数组进行排序..使用
ksort($array)谢谢,阵列已成功删除。但是在它被删除后,另一个数组的索引不会改变。使用您的代码,在[1][2][3][4]之前,在[1][3][4]之后。。如何保持索引的顺序?您需要对数组进行排序..使用
ksort($array)