通过键数组获取关联数组元素

fir*_*ird 1 php arrays

$array1 = ['key1'=>'val1', 'key2'=>'val2', 'key3'=>'val3']
$array2 = ['key1','key3']
Run Code Online (Sandbox Code Playgroud)

我想从array1中获取array2中包含键的所有元素.所以结果应该是:

$result = ['key1'=>'val1', 'key3'=>'val3']
Run Code Online (Sandbox Code Playgroud)

我尝试了array_intersect_key($ array1,$ array2),但这不起作用.获得上述结果的最快方法是什么?

编辑:忘记提到array2可能是一个关联数组或单维.

Mar*_*ker 6

在使用array_intersect_key()之前,需要使key1和key2成为第二个数组中的键:使用array_flip()来执行此操作

$result = array_intersect_key($array1,array_flip($array2));
Run Code Online (Sandbox Code Playgroud)

编辑

$ array2是否是关联的并不重要:

$array1 = array('key1'=>'val1', 'key2'=>'val2', 'key3'=>'val3');
$array2 = array('first'=>'key1','second'=>'key3');

$filteredData = array_intersect_key($array1,array_flip($array2));
var_dump($filteredData);
Run Code Online (Sandbox Code Playgroud)

仍然给

array
  'key1' => string 'val1' (length=4)
  'key3' => string 'val3' (length=4)
Run Code Online (Sandbox Code Playgroud)