首页 > 解决方案 > 使用另一个数组的键值获取数组的值

问题描述

我有一个包含一些值(数值)的数组:

$arr1 = [1, 3, 8, 12, 23]

我有另一个关联数组,其中一个键(与 的值匹配$arr1)对应于一个值。该数组可能还包含与 不匹配的键$arr1

$arr2 = [1 => "foo", 2 => "foo98", 3 => "foo20", 8 => "foo02", 12 => "foo39", 15 => "foo44", 23 => "foo91", 34 => "foo77"]

我想返回将以下值$arr2指定为键的值$arr1

["foo", "foo20", "foo02", "foo39", "foo91"]

如果可能的话,所有这一切,没有循环,只使用 PHP 数组本机函数(所以以一种优雅的方式),或者至少使用尽可能少的循环。

标签: phparrays

解决方案


最小循环很简单 - 1. 如:

foreach($arr1 as $k) {
    $res[] = $arr2[$k];
}

你可以这样做,array_walk但我认为这种简单的方法更具可读性。

如果你坚持你可以用array_filter++做array_valuesin_array

$res = array_values(array_filter($arr2,
    function ($key) use ($arr1) { return in_array($key, $arr1);},
    ARRAY_FILTER_USE_KEY
));

您可以查看内容以了解有关过滤键的更多信息


推荐阅读