2010-05-02 4 views
6

Es ist spät und ich weiß, es ist eine sehr einfache Frage, aber jetzt habe ich nicht eine Idee und Schluss ist in der Nähe von ..aus assoziativem Array Get nur, dass Elemente, die Schlüssel angegeben werden

ich zwei Arrays habe :

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

Was war der Name der Funktion, um einen Teil des assoc-Arrays durch Schlüssel aus dem zweiten Array zu erhalten?

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

Vielen Dank!

Antwort

20

Try this:

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

Das war das! Vielen Dank. Schande für mich. ;) – hsz

+0

Wow! Irgendwie habe ich diese Funktion vor heute verpasst. Cool! http://php.net/array_intersect_key – artlung

0

Ich denke, es gibt keine solche Funktion, so dass ich ein implementieren:

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

Ich bin gespannt zu sehen, ob es eine integrierte ist, dass dies der Fall ist. So würde ich es machen.

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