这应该是一个简单的衬里,但我不太明白:
我有一个像这样的数组:
$a = ["z", "x", "y"];
还有一个像这样的数组:
$b = ["x"=>"a", "y"=>"b", "z"=>"c"];
什么是 php oneliner 来获取:
$c = ["c", "a", "b"];
我想使用 a 的每个元素来索引 b 并返回结果数组 我一直在查看 array_map 但不知道如何将 b 绑定到回调函数。
$c = array_merge(array_intersect_key(array_flip($a), $b), $b);
$c = array_values($c);
不是真正的一句台词,但很接近:P
$c = array();
foreach ($a as $key => $value)
{
if (isset($b[$value]))
{
$c[] = $b[$value];
}
}
这是我在@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”关键字将关联数组绑定到闭包。 一旦你知道你在寻找什么,就很简单了:-)