我有两个像这样的数组
$arr1 = Array('fn', 'ln', 'em');
$arr2 = Array('fn'=>'xyz', 'ano' => 'abc', 'ln'=>'122', 'em' => 'a@b.com', 'db'=>'xy');
我想使用$ arr1中的所有元素从arr2创建一个数组。所以结果应该是这样的。
$result = Array( 'fn'=>'xyz', 'ln'=>'122', 'em'='a@b.com');
不想循环。
有什么想法吗?
答案 0 :(得分:9)
参数的顺序在这里很重要
print_r(array_intersect_key($arr2, array_flip($arr1)));
答案 1 :(得分:4)
您可以使用array_map
。
// PHP 5.3+ only
$result = array_combine($arr1, array_map(function($a) use($arr2){
return $arr2[$a];
}, $arr1));
DEMO:http://codepad.viper-7.com/Y1aYcf
如果你有PHP< 5.3,你可以使用array_intersect_key
和array_flip
做一些诡计。
$result = array_intersect_key($arr2, array_flip($arr1));
答案 2 :(得分:0)
你只需要循环,就像在创建一个新数组或者在数学函数中检查一些数组一样。我认为,也许,切除可能有效。