php - 使用另一个数组的键值获取数组的值
问题描述
我有一个包含一些值(数值)的数组:
$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 数组本机函数(所以以一种优雅的方式),或者至少使用尽可能少的循环。
解决方案
最小循环很简单 - 1. 如:
foreach($arr1 as $k) {
$res[] = $arr2[$k];
}
你可以这样做,array_walk
但我认为这种简单的方法更具可读性。
如果你坚持你可以用array_filter
++做array_values
:in_array
$res = array_values(array_filter($arr2,
function ($key) use ($arr1) { return in_array($key, $arr1);},
ARRAY_FILTER_USE_KEY
));
您可以查看此内容以了解有关过滤键的更多信息
推荐阅读
- php - 我在 codeginter 中的 ajax 或 jquery 中的问题
- php - 无法找到 PHPunit phar。检查 php 单元配置:eclipse 氧气
- python - 无法在 docker 容器中使用 coinbase API
- ravendb - 在 RavenDB v4 中获取匹配的文本
- python - 使用 append 从另一个列表生成一个简单列表
- python - 无法获得用引号括起来的输出
- c# - MVC Web API 中的 Owin 给出 CancelationToken 异常
- flask - Mongoengine - 查询以获取字段值为 null 或不包含该字段的匹配文档
- cassandra - Cassandra 从一个本地提供商迁移到另一个提供商。数据的一致性和完整性检查
- angular - 很难将值从标头组件发送到模态组件