获取所有阵列中显示的所有密钥

获取所有阵列中显示的所有密钥

问题描述:

I have some arrays, for example

$arr[0]=array(k1=>1,k2=>1,k3=>1);
$arr[1]=array(k2=>1,k3=>1,k4=>1);
$arr[2]=array(k3=>1,k4=>1,k5=>1);

So, I need to get all the keys (dynamically, the number of arrays can differ), presented in all arrays. In this case it is k3 key. So the result should be array('k3'=>1)

I suggest it could be achieved by multiple loops, but probably there's some easier way.

我有一些数组,例如 p>

  $ arr [  0] =阵列(K1 =大于1,K2 =大于1,K3 =大于1); 
 $的ARR [1] =阵列(K2 =大于1,K3 =大于1,K4 =>  1); 
 $的ARR [2] =阵列(K3 =大于1,K4 =大于1,K5 =大于1); 
 代码>  PRE> 
 
 

所以 ,我需要在所有数组中显示所有键(动态地,数组的数量可以不同)。 在这种情况下,它是 k3 code>键。 所以结果应该是 array('k3'=> 1) code> p>

我建议它可以通过多个循环实现,但可能有一些更简单的方法。 p> div>

You need the function array_intersect_key():

<?php

$arr1 = array('k1' => 1, 'k2' => 1, 'k3' => 1);
$arr2 = array('k2' => 1, 'k3' => 1, 'k4' => 1);
$arr3 = array('k3' => 1, 'k4' => 1, 'k5' => 1);

print_r(
    array_intersect_key($arr1, $arr2, $arr3)
);

Output:

Array
(
    [k3] => 1
)

To get the common elements in three arrays, you can use array_intersect()

Note: This function works on common array values and not common array keys

Try this:

$key1 = array_flip($arr1);
$key2 = array_flip($arr1);
$key3 = array_flip($arr1);

$intersect = array_flip(array_intersect($key1, $key2, $key3));