$subset = array_intersect_key($haystack, array_flip($needleNames));
This is often used under the name pluck or similarly as a helper function.
function pluck(array $array, $keys) { if (!is_array($keys)) { $keys = func_get_args(); array_shift($keys); } return array_intersect_key($array, array_flip($keys)); } var_dump(pluck($array, array('foo', 'bar', 'baz'))); var_dump(pluck($array, 'foo', 'bar', 'baz'));
source share