4

私はこのような2つの配列を持っています

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

ループしたくない。

何か案が?

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_keyますarray_flip

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

デモ:http ://codepad.org/MuydURQT

于 2012-06-08T20:32:31.663 に答える
0

新しい配列を作成する場合や、数学関数で配列セットをチェックする場合のように、ループする必要があります。多分、切開はうまくいくかもしれないと思います。

于 2012-06-08T20:39:00.683 に答える