Получить подмножество массива на основе массива ключей

Я написал эту функцию, чтобы получить подмножество массива. Для этого php имеет встроенную функцию. Я не могу найти его в документах. Похоже на отходы, если я изобретаю колесо.

function array_subset($array, $keys) { $result = array(); foreach($keys as $key){ $result[$key] = $array[$key]; } return $result; } 

Solutions Collecting From Web of "Получить подмножество массива на основе массива ключей"

array_diff_key и array_intersect_key , вероятно, вы хотите.

Я тоже этого хочу. Как PHP-версия подбора Underscore.

Это уродливое и противоречивое, но то, что я иногда делаю, это (я думаю, это может быть то, что происходит у продигитальонов):

 $a = ['foo'=>'bar', 'zam'=>'baz', 'zoo'=>'doo']; // Extract foo and zoo but not zam print_r(array_intersect_key($a, array_flip(['foo', 'zoo']))); /* Array ( [foo] => bar [zoo] => doo ) */ 

array_intersect_key возвращает все элементы первого аргумента, ключи которых присутствуют во втором аргументе (и все последующие аргументы, если они есть). Но, поскольку он сравнивает ключи с ключами, я использую array_flip для удобства. Я мог бы просто использовать ['foo' => null, 'zoo' => null] но это даже уродливее.