php - PHP使用数组值匹配另一个数组的键,然后将值提取到新数组中
问题描述
$encoding = [0 => 'X', 1 => 'K', 2 => 'L', 3 => 'R', 4 => 'B'];
$digits = [1, 1, 4, 2];
// result should then equal ['K', 'K', 'B', 'L']
我可以使用 foreach 循环轻松完成此操作并推入一个新数组。
$encoding = [0 => 'X', 1 => 'K', 2 => 'L', 3 => 'R', 4 => 'B'];
$digits = [1, 1, 4, 2];
$result = [];
foreach($digits as $digit) {
$result[] = $encoding[$digit];
}
但是我找不到 php 中是否有一个内置的函数来处理这个或者一个可以做到这一点的辅助函数库?
我还希望它能够进行逆运算并将值解码回其数字。
解决方案
一种可能性是使用array_map
:
$encoded = array_map(function ($v) use ($encoding) { return $encoding[$v]; }, $value);
输出:
Array ( [0] => K [1] => K [2] => B [3] => L )
要解码结果,您可以array_map
再次使用,这次使用array_search
来查找要返回的适当键值:
$decoded = array_map(function ($v) use ($encoding) { return array_search($v, $encoding);}, $encoded);
或者正如@Barmar 所建议的那样,这可能更有效:
$encoding_f = array_flip($encoding);
$decoded = array_map(function ($v) use ($encoding_f) { return $encoding_f[$v];}, $encoded);
输出:
Array ( [0] => 1 [1] => 1 [2] => 4 [3] => 2 )
推荐阅读
- android - 在 Android Studio 中使用 Recycler View 单击分页中的每个项目?
- android - 如何用android“dp”测量位图
- java - 更改 Java 中公共变量的值,供多个框架使用
- jupyter-notebook - 由于类型错误,通过标签删除某些单元格失败
- python - 改变熊猫的nan值
- jenkins - 使用 jenkins 更新 kubernetes 部署
- apache-spark - 转换列表[地图
] 触发数据框 - ruby - 从所有属性定义中提取使用的 filebeat 探矿者'fileds'(基于 ruby)
- ionic-framework - ionic 3 ion-radio 在字符串等于某物时检查
- arrays - 共享的类型是什么?