我想要组合两个数组。我需要从第一个数组中获取值,使用这些值作为匹配来自第二个数组的键,并将它们组合成第三个数组(我将使用的那个)。
换句话说,我有第一个数组:
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,没有运气。
答案 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