$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可能是一个关联数组或单维.
在使用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)