按键获取数组值

我正在搜索一个内置的 php 函数,该函数将键数组作为输入并返回相应的值。

例如,我有一个下面的数组

$arr = array("key1"=>100, "key2"=>200, "key3"=>300, 'key4'=>400);

我需要键 密码2关键4的值,所以我有另一个 array("key2", "key4") 我需要一个函数,以这个数组和第一个数组作为输入,并提供我的响应值。因此,响应将是 array(200, 400)

91652 次浏览

我认为你正在搜索 Array _ intersect _ key。例如:

array_intersect_key(array('a' => 1, 'b' => 3, 'c' => 5),
array_flip(array('a', 'c')));

将返回:

array('a' => 1, 'c' => 5);

如果希望代码简单一点,可以使用 array('a' => '', 'c' => '')而不是 array_flip(...)

注意,数组键是保留的。如果需要顺序数组,应该在后面使用 Array _ value

foreach($input_arr as $key) {
$output_arr[] = $mapping[$key];
}

这将导致 $output_arr具有与 $input_arr中的键列表对应的值,这基于 $mapping中的键-> 值映射。如果你愿意,你可以把它包装成一个函数:

function get_values_for_keys($mapping, $keys) {
foreach($keys as $key) {
$output_arr[] = $mapping[$key];
}
return $output_arr;
}

然后你可以这样称呼它:

$a = array('a' => 1, 'b' => 2, 'c' => 3);
$values = get_values_for_keys($a, array('a', 'c'));
// $values is now array(1, 3)

另一种答案是:

$keys = array("key2", "key4");


return array_map(function($x) use ($arr) { return $arr[$x]; }, $keys);