我有
$Array1 = [3=>'dog', 7=>'cat', 9=>'duck', 10=>'dog', 11=>'dog'];
$Array2 = ['cat'=>'sofa', 'dog'=>'kennel', 'duck'=>'pond'];
我想要输出$ ArrayOut where
$ArrayOut = [3=>'kennel', 7=>'sofa', 9=>'pond', 10=>'kennel', 11=>'kennel'];
我可以通过foreach
循环
foreach ($Array1 as $key => $value) {
$ArrayOut[$key] = $Array2[$value];
}
但我在想是否可以避免循环并使用内置PHP数组函数的组合来创建相同的输出。
任何线索都会有所帮助,谢谢。
答案 0 :(得分:4)
我认为这可以解决问题。
$Array1 = [3=>'dog', 7=>'cat', 9=>'duck', 10=>'dog', 11=>'dog'];
$Array2 = ['cat'=>'sofa', 'dog'=>'kennel', 'duck'=>'pond'];
$ArrayOut = array_map(function($v) use($Array2){
return $Array2[$v];
}, $Array1);
print_r($ArrayOut);
//Array ( [3] => kennel [7] => sofa [9] => pond [10] => kennel [11] => kennel )
答案 1 :(得分:0)
试试这个:
$Array1 = [3=>'dog', 7=>'cat', 9=>'duck'];
$Array2 = ['cat'=>'sofa', 'dog'=>'kennel', 'duck'=>'pond'];
$new = array_flip($Array1);
$new2 = array_replace($Array2, $new);
$n = array_combine(array_merge($new2, $new), $Array2);
print_r($n);
Ouptut:
Array
(
[7] => sofa
[3] => kennel
[9] => pond
)
答案 2 :(得分:-1)
如果有人要求将一个数组中的值与另一个数组的键匹配,我仍然会留下我的答案供将来参考
只要你的数组符合你想要的顺序,你就可以使用它。
http://php.net/manual/en/function.array-combine.php
array_keys将提取到一个数组中,即指定数组的键
array_values将提取到一个数组中,指定数组的值
正如函数所说,array_combine会将匹配参数组合成一个数组 - 第一个数组参数是键,第二个数组是值。