PHP - 如何将一个数组的元素作为键映射到另一个数组并将结果值作为数组返回?

时间:2013-12-17 15:19:27

标签: php

这应该是一个简单的一个班轮,但我不太明白:

我有一个这样的数组:

$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'关键字用于将函数绑定到闭包。

http://www.php.net/manual/en/functions.anonymous.php

3 个答案:

答案 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'关键字绑定到关闭的关联数组。 一旦你知道你在寻找什么就很简单: - )