我有两个这样的数组
$arr1 = Array('fn', 'ln', 'em');
$arr2 = Array('fn'=>'xyz', 'ano' => 'abc', 'ln'=>'122', 'em' => 'a@b.com', 'db'=>'xy');
我想从 arr2 创建一个数组,其中包含 $arr 1 中的所有元素。所以结果应该是这样的。
$result = Array( 'fn'=>'xyz', 'ln'=>'122', 'em'='a@b.com');
不想循环。
知道吗?
参数的顺序在这里很重要
print_r(array_intersect_key($arr2, array_flip($arr1)));
您可以使用
array_map
。
// PHP 5.3+ only
$result = array_combine($arr1, array_map(function($a) use($arr2){
return $arr2[$a];
}, $arr1));
演示:http://codepad.viper-7.com/Y1aYcf
如果你有 PHP <5.3,你可以用 array_intersect_key
和 array_flip
做一些技巧。
$result = array_intersect_key($arr2, array_flip($arr1));
演示:http://codepad.org/MuydURQT
你只需要循环,就像创建一个新数组一样,或者检查数学函数中的一些数组集。 我想,也许,昆虫可能会起作用。