删除数组子项,其中value =多维数组中的某个值

时间:2013-10-29 08:55:22

标签: php arrays

我有一个像这个$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]);
}

非常感谢任何帮助。谢谢

4 个答案:

答案 0 :(得分:4)

您可以使用array_column但仅适用于php >= 5.5

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

array_column( $membergroups, 'id')在成员组多维数组中搜索id列,并返回一个包含所有行值数组的数组,其中包含id键。

array_column - > MANUAL

答案 1 :(得分:0)

遍历整个数组:

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

答案 2 :(得分:0)

使用foreach,你可以像这样完成工作

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

答案 3 :(得分:0)

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

不要忘记在删除键后合并数组以保持索引的顺序

$membergroups = array_merge($membergroups);
相关问题