2013-10-29 112 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);