2010-01-25 68 views
7

的一部分,我有一個數組:獲取數組

$array = array(
    'key1' => 'value1', 
    'key2' => 'value2', 
    'key3' => 'value3', 
    'key4' => 'value4', 
    'key5' => 'value5', 
); 

,我想獲得它的一部分與指定的鍵 - 例如key2, key4, key5

預期結果:

$result = array(
    'key2' => 'value2', 
    'key4' => 'value4', 
    'key5' => 'value5', 
); 

是什麼做的最快方法?

+1

欺騙:http://stackoverflow.com/questions/1742018/somewhat - 簡單的PHP陣列相交-問題 – SilentGhost 2010-01-25 13:14:58

回答

16

您需要array_intersect_key功能:

$result = array_intersect_key($array, array('key2'=>1, 'key4'=>1, 'key5'=>1)); 

而且array_flip可以幫助,如果你的鑰匙在數組值:

$result = array_intersect_key(
    $array, 
    array_flip(array('key2', 'key4', 'key5')) 
); 
0

我看到的唯一方法是遍歷數組,構建一個新的。

或者用array_walk遍歷數組並構造新數組或構造一個匹配數組並使用array_intersect_key等。

5

您可以使用array_intersect_keyarray_fill_keys這樣做:

$keys = array('key2', 'key4', 'key5'); 
$result = array_intersect_key($array, array_fill_keys($keys, null)); 

array_flip而不是array_fill_keys也將工作:

$keys = array('key2', 'key4', 'key5'); 
$result = array_intersect_key($array, array_flip($keys));