2010-05-02 80 views
6

這晚,我知道這是一個很簡單的問題,但現在我沒有一個想法,截止日期是近..從關聯數組僅獲得該元素的鍵指定

我有兩個數組:

$array1 = array(
    'a' => 'asdasd', 
    'b' => 'gtrgrtg', 
    'c' => 'fwefwefw', 
    'd' => 'trhrtgr', 
); 
$array2 = array(
    'b', 'c' 
); 

函數的名字是從第二個數組中獲得關聯數組的一部分的函數的名字是什麼?

$result = array(
    'b' => 'gtrgrtg', 
    'c' => 'fwefwefw', 
); 

謝謝!

回答

20

試試這個:

array_intersect_key($array1, array_flip($array2)). 
+0

就是這樣!謝謝。對我感到羞恥。 ;) – hsz 2010-05-02 22:46:40

+0

哇!不知何故,我在今天之前錯過了這個功能。涼! http://php.net/array_intersect_key – artlung 2010-05-02 22:48:59

0

我覺得有沒有這樣的功能,所以我會實現一個:

function array_filter_keys($array, $keys) { 
    $newarray = array(); 
    foreach ($keys as $key) { 
    if (array_key_exists($key, $array)) $newarray[$key] = $array[$key]; 
    } 
    return $newarray; 
} 
0

我很好奇,看看是否有一個內置在做這個。這是我將如何去做的。

$result = array(); 
foreach ($array2 as $key) { 
    if (array_key_exists($key, $array1) { 
    $result[$key] = $array1[$key]; 
    } 
}