基于密钥数组获取数组的子集
我写了这个函数来获取数组的子集。 PHP是否有一个内置的功能。我在文档中找不到一个。如果我重新发明*,似乎是一种浪费。基于密钥数组获取数组的子集
function array_subset($array, $keys) {
$result = array();
foreach($keys as $key){
$result[$key] = $array[$key];
}
return $result;
}
array_diff_key
和array_intersect_key
可能是你想要什么。
函数名称是单数。 http://www.php.net/manual/en/ref.array.php PHP需要清理它们的命名约定! – Keyo 2010-08-11 03:13:16
当您将关键字映射到关联数组中以查找非关联数组中的值表时,可以在一个参数上使用'array_flip'确保交集/ diff基于两个键或两个值,而不是一个或另一个的混合。 – danronmoon 2014-02-26 03:38:33
我总是也想这样。像Underscore的pick的PHP版本。
这是丑陋和反直觉的,但我有时做的是(我想这可能是什么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
)
*/
array_intersect_key返回第一个参数,它的键是所有元素出现在第二个参数(以及所有后续参数,如果有的话)。但是,由于它将按键与按键进行比较,为方便起见,我使用array_flip。我也可以刚刚使用['foo' => null, 'zoo' => null]
,但这更加丑陋。
[PHP数组函数返回给定键的子集]的可能副本(https://*.com/questions/12543361/php-array-function-that-returns-a-subset-for-given-keys ) – 2018-03-07 20:27:38