2012-12-06 157 views
0

我有一個數組,陣列搜索密鑰=>值

$arr=(
    [0] => Array 
     (
      [groupid] => 1 
      [groupname] => Red 
      [members] => Array 
       (
        [0] => Array 
         (
          [mid] => 9 
          [name] => Anith 
         ) 

        [1] => Array 
         (
          [mid] => 11 
          [name] => Aravind 
         ) 

        [2] => Array 
         (
          [mid] => 10 
          [name] => Lekshmi 
         ) 



       ) 

     ) 

    [1] => Array 
     (
      [groupid] => 2 
      [groupname] => Blue 
      [members] => Array 
       (
        [0] => Array 
         (
          [mid] => 6 
          [name] => Yamuna 
         ) 

        [1] => Array 
         (
          [mid] => 2 
          [name] => Kamala K 
         ) 

        [2] => Array 
         (
          [mid] => 13 
          [name] => Sooraj K 
         ) 



       ) 

     ) 

我想檢查​​處於array..If它存在 我要刪除它(即未設置所述陣列) -----

[1] => Array 
         (
          [mid] => 2 
          [name] => Kamala K 
         ) 
;;; 

如: - unset($arr[1]['members'][2];

回答

4

這應該做的伎倆

foreach ($arr as $group => $subarray) { 
    foreach ($subarray['members'] as $k => $v) { 
     if ($v['mid'] == 2) { 
      unset($arr[$group]['members'][$k]); 
      break; 
     } 
    } 
} 

var_dump($arr); 

如果你覺得自己越來越狡猾,你可以做這樣的事情:

// note: requires PHP >= 5.3 
foreach ($arr as $key => &$value) { 
    $value['members'] = array_filter(
     $value['members'], 
     function($member) { 
      return $member['mid'] != 2; 
     } 
    ); 
} 

var_dump($arr); 
+1

我會親自命名的關鍵變量'$ k'你已經使用到的東西更具描述性的,比如'$ group' –

+0

謝謝,一個更多的幫助...如果我有[羣組] => 1,那麼我想解除與此羣組相關的問題 –

+0

Sanu,您如何查詢正確的數據而不是魯莽地過濾結果? –