使用数组PHP从另一个数组中提取数组

时间:2012-06-08 20:29:50

标签: php arrays

我有两个像这样的数组

 $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');

不想循环。

有什么想法吗?

3 个答案:

答案 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_keyarray_flip做一些诡计。

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

DEMO:http://codepad.org/MuydURQT

答案 2 :(得分:0)

你只需要循环,就像在创建一个新数组或者在数学函数中检查一些数组一样。我认为,也许,切除可能有效。