在多维数组中查找子数组之间的公共值

Joh*_*n K 3 php arrays multidimensional-array

我有以下数组:

Array
(
    [0] => Array
        (
            [0] => 87
            [1] => 58
            [2] => 85
            [3] => 86
        )

    [1] => Array
        (
            [0] => 58
            [1] => 84
        )

    [2] => Array
        (
            [0] => 58
        )

)
Run Code Online (Sandbox Code Playgroud)

上面的这个数组是一个例子.实际的数组大小可变,但结构如下.基本上,我想array_intersect在每个二级数组上运行并获取它们之间常见的值(数字).在这种情况下,它会58.

我不太清楚从哪里开始.有什么建议?

net*_*der 12

这对我有用:

function multi_intersect($arr) {
   $return = array();
   foreach ($arr as $a) {
       foreach ($arr as $b) {
           if ($a === $b) continue;
           $return = array_merge($return, array_intersect($a, $b));
       }
   }
   return array_unique($return);
}
Run Code Online (Sandbox Code Playgroud)

应该得到你:

Array
(
    [0] => 58
)
Run Code Online (Sandbox Code Playgroud)

如果您在至少两个子阵列中有一个公共号码,则上述操作将起作用.

编辑后:

如果要查找所有子数组中包含的数字,只需使用call_user_func_arrayon array_intersect:

$intersect = call_user_func_array('array_intersect', $arr);
Run Code Online (Sandbox Code Playgroud)