这应该是一个简单的一个班轮,但我不太明白:
我有一个这样的数组:
$a = ["z", "x", "y"];
和这样的数组:
$b = ["x"=>"a", "y"=>"b", "z"=>"c"];
什么是php oneliner:
$c = ["c", "a", "b"];
我想使用a的每个元素索引到b并返回结果数组 我一直在看array_map,但无法弄清楚如何将b绑定到回调函数。我还是PHP的新手,谢谢!
顺便说一下,我做了一些搜索,但找不到我想要的东西。附加信息(已编辑):
这就是我正在尝试的,以及我想要的语法:
$c = array_map(function($key) use ($b){ return $b[$key]; }, $a);
更多其他信息:
似乎'use'关键字用于将函数绑定到闭包。
答案 0 :(得分:2)
$c = array();
foreach ($a as $key => $value)
{
if (isset($b[$value]))
{
$c[] = $b[$value];
}
}
答案 1 :(得分:1)
$c = array_merge(array_intersect_key(array_flip($a), $b), $b);
$c = array_values($c);
不是真正的单线,而是接近:P
答案 2 :(得分:1)
这是我在@onetrickpony的帮助下最终获得的解决方案:
$a = array("z", "x", "y");
$b = array("x"=>"a", "y"=>"b", "z"=>"c");
$c = array_map(function($key) use ($b){ return $b[$key]; }, $a);
关键是'use'关键字绑定到关闭的关联数组。 一旦你知道你在寻找什么就很简单: - )