4

我有两个这样的数组

 $arr1 = Array('fn', 'ln', 'em');
 $arr2 = Array('fn'=>'xyz',  'ano' => 'abc', 'ln'=>'122', 'em' => 'a@b.com', 'db'=>'xy');

我想从 arr2 创建一个数组,其中包含 $arr1 中的所有元素。所以结果应该是这样的。

 $result = Array( 'fn'=>'xyz', 'ln'=>'122', 'em'='a@b.com');

不想循环。

任何想法?

4

3 回答 3

9

参数的顺序在这里很重要

 print_r(array_intersect_key($arr2, array_flip($arr1)));
于 2012-06-08T20:35:39.010 回答
4

你可以用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_keyand做一些诡计array_flip

$result = array_intersect_key($arr2, array_flip($arr1));

演示:http ://codepad.org/MuydURQT

于 2012-06-08T20:32:31.663 回答
0

你只需要循环,就像创建一个新数组或者检查数学函数中的一些数组集。我认为,也许,insection 可能会起作用。

于 2012-06-08T20:39:00.683 回答