Я написал эту функцию, чтобы получить подмножество массива. Для этого php имеет встроенную функцию. Я не могу найти его в документах. Похоже на отходы, если я изобретаю колесо.
function array_subset($array, $keys) { $result = array(); foreach($keys as $key){ $result[$key] = $array[$key]; } return $result; }
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]
но это даже уродливее.