我想要一种快速简单的方法来复制数组,但能够指定要复制的数组中的哪些键。
我可以轻松地为此编写一个函数,但我想知道是否有一个PHP函数已经执行此操作。类似下面的array_from_keys()
函数。
$sizes = array('small' => '10px', 'medium' => '12px', 'large' => '13px');
$chosen = array_from_keys($sizes, 'small', 'large');
// $chosen = array('small' => '10px', 'large' => '13px');
答案 0 :(得分:9)
PHP中有一个允许这种操作的本机函数,即array_intersect_key
,但是你必须稍微修改一下语法。
<?php
$sizes = array('small' => '10px', 'medium' => '12px', 'large' => '13px');
$selected = array_fill_keys(array('small', 'large'), null);
$result = array_intersect_key($sizes, $selected);
?>
$ result将包含:
Array (
[small] => 10px
[large] => 13px
);
答案 1 :(得分:5)
据我所知,目前还没有这方面的功能。最简单的方法是做我想的这样的事情:
$chosen = array_intersect_key($sizes, array_flip(array('small', 'large')));
或者如您所说,您可以轻松编写功能:
function array_from_keys() {
$params = func_get_args();
$array = array_shift($params);
return array_intersect_key($array, array_flip($params));
}
$chosen = array_from_keys($sizes, 'small', 'large');
答案 2 :(得分:1)
简单方法:
$sizes = array('small' => '10px', 'medium' => '12px', 'large' => '13px');
$chosen = array("small", "large");
$new = array();
foreach ($chosen as $key)
$new[$key] = $sizes[$key];