PHP,将两个数组组合成一个新数组,使用第一个数组的值作为键

时间:2011-01-13 22:38:09

标签: php arrays list key

我想要组合两个数组。我需要从第一个数组中获取值,使用这些值作为匹配来自第二个数组的键,并将它们组合成第三个数组(我将使用的那个)。

换句话说,我有第一个数组:

Array
(
[24] => 5
[26] => 4
[27] => 2
)

我拥有的第二个数组:

Array
(
[1] => McDonalds
[2] => Burger King
[3] => Wendys
[4] => Taco Bell
[5] => Hardees
)

最后,这是我想要的数组:

Array
(
[5] => Hardees
[4] => Taco Bell
[2] => Burger King
)

似乎很容易,但我似乎无法弄明白。我尝试了各种数组函数,比如array_intersect_key,没有运气。

4 个答案:

答案 0 :(得分:7)

这是一个简单的imperative解决方案:

$combined = array();

foreach ($array1 as $v) {
    if (isset($array2[$v])) {
        $combined[$v] = $array2[$v];
    }
}

一个functional解决方案:

// Note that elements of $combined will retain the order of $array2, not $array1
$combined = array_intersect_key($array2, array_flip($array1));

答案 1 :(得分:1)

$result = array();
foreach (array_flip($keys) as $k) {
    $result[$k] = $values[$k];
}

答案 2 :(得分:0)

只需一行:

foreach ($a as $v) $c[$v]=$b[$v];

请参阅:

$a=array(24=>5,26=>4,27=>2);
$b=array(1=>'McDonalds',2=>'Burger King',3=>'Wendys',4=>'Taco Bell',5=>'Hardees');

foreach ($a as $v) $c[$v]=$b[$v];

print_r($c);

它返回:

Array
(
    [5] => Hardees
    [4] => Taco Bell
    [2] => Burger King
)

答案 3 :(得分:-1)

array_keys做你想要的本地

第一个参数是你快餐店的数组,第二个参数是你给的第一个数组(你想要的键)

e.g:

$array = array_keys(array(0 => 'McDonalds', 1 => 'BurgerKing', 2 => 'Taco Bell'),
  array(0 => 1));
$array will only have BurgerKing in it