2013-01-04 143 views
1

是否有一種合理的方式從我指定的列表中刪除數組中的所有字段?PHP從陣列中刪除除x以外的所有內容

我在想着array_diff可以工作,但我只想列出我想允許的字段鍵,然後說'放棄其他一切'。這樣做的最好方法是什麼?

非常感謝

+0

你會如何指定這些領域?在代碼中還是動態? –

+0

這是來自數據庫結果的數組嗎? –

+0

爲什麼投下這個問題呢?不管數組是什麼或它來自何處 - 它只是任何給定的數組,使用@PleaseStand的想象力..! – Tim

回答

6

array_intersect_key()應該工作,如果複製數組確定。

$arr = array(
    'A' => 'alpha', 
    'B' => 'bravo', 
    'C' => 'charlie', 
    'D' => 'delta' 
); 

$allowedKeys = array('B', 'C'); 

print_r(array_intersect_key($arr, array_flip($allowedKeys))); 

# Array 
# (
# [B] => bravo 
# [C] => charlie 
#) 

否則,您可以使用foreach循環:

foreach ($arr as $key => $value) { 
    if (!in_array($key, $allowedKeys)) { 
     unset($arr[$key]); 
    } 
} 
+0

第一個例子非常棒 - 正是我所追求的。非常感謝! – Tim

0

試試下面的代碼..這可能爲你工作

foreach($array as $key=>&$value) { 
     if($key!='yourx') { 
      unset($array[$key]) 
     } 
    } 
+0

@Wesley van Opdorp 10x用於格式化我的代碼。:) –

相關問題