Key*_*eyo 12 php arrays higher-order-functions
我写了这个函数来获取数组的子集.php是否具有内置功能.我在文档中找不到一个.如果我重新发明轮子,似乎是浪费.
function array_subset($array, $keys) {
$result = array();
foreach($keys as $key){
$result[$key] = $array[$key];
}
return $result;
}
Run Code Online (Sandbox Code Playgroud)
Lin*_*usR 12
我也一直想要这个.就像一个PHP版的Underscore的选择.
它很丑陋且反直觉,但我有时会这样做(我认为这可能是prodigitalson所得到的):
$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
)
*/
Run Code Online (Sandbox Code Playgroud)
array_intersect_key返回第一个参数的所有元素,其第二个参数中存在键(以及所有后续参数,如果有的话).但是,由于它将键与键进行比较,为方便起见,我使用array_flip.我也可以使用,['foo' => null, 'zoo' => null]但这更加丑陋.
pro*_*son 11
array_diff_key并且array_intersect_key可能是你想要的.