我寫了這個函數來獲取數組的子集。 PHP是否有一個內置的功能。我在文檔中找不到一個。如果我重新發明輪子,似乎是一種浪費。基於密鑰數組獲取數組的子集
function array_subset($array, $keys) {
$result = array();
foreach($keys as $key){
$result[$key] = $array[$key];
}
return $result;
}
我寫了這個函數來獲取數組的子集。 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://stackoverflow.com/questions/12543361/php-array-function-that-returns-a-subset-for-given-keys ) – 2018-03-07 20:27:38