2013-10-29 33 views
1

我有一个多维数组这样$membergroups删除阵列孩子下value = someValue中的多维数组

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]); 
} 

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

回答

0

使用foreach你可以像这样

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

谢谢,数组已成功删除。但删除后,另一个数组的索引不会更改。使用你的代码之前:[1] [2] [3] [4],之后:[1] [3] [4] ..如何保持指数保持顺序? –

+0

你需要排序数组..使用'ksort($ array);' –

4

可以使array_column使用,但仅适用于membergroup多维数组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

0

遍历整个数组:

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

工作不要忘了在删除密钥后合并数组以保持索引的顺序

$membergroups = array_merge($membergroups);