Php 获取存在于每个数组中的嵌套数组的值

Php 获取存在于每个数组中的嵌套数组的值,php,arrays,multidimensional-array,nested,array-intersect,Php,Arrays,Multidimensional Array,Nested,Array Intersect,我有以下嵌套数组: array(3) { [16]=> array(3) { [0]=> int(159) [1]=> int(160) [2]=> int(158) } [21]=> array(2) { [0]=> int(160) [1]=> int(158) } [19]=> array(2) { [0]=> int(158) [1]=> int(159) } } 如您所见,它包

我有以下嵌套数组:

array(3) { [16]=> array(3) { [0]=> int(159) [1]=> int(160) [2]=> int(158) } 
           [21]=> array(2) { [0]=> int(160) [1]=> int(158) } 
           [19]=> array(2) { [0]=> int(158) [1]=> int(159) } }
如您所见,它包含3个子数组。子数组的all包含整数“158”作为值,但也包含“159”。我想以某种方式在子数组中循环,并检查是否所有子数组都包含该值。然后我想返回一个只包含这些值的数组

我知道我可以使用array_intersect进行此操作,但是嵌套数组是动态生成的,因此我不确定如何使用array intersect处理此问题:

<?php
$arr1 = array('158','250','342'); 
$arr2 = array('158','142','352');

$diff1 = array_intersect($arr1, $arr2);
print_r( $diff1 );
//RETURNS Array ( [0] => 158 )
?>

您可以使用splat操作符一次性将所有子阵列传递到数组中

$arr1 = [['158','250','342'],['158','142','352'],['1421','158','3521']];

$diff1 = array_intersect(...$arr1);
print_r( $diff1 );
//RETURNS Array ( [0] => 158 )

在四处搜索之后,我发现了以下内容:

$result = call_user_func_array('array_intersect', $productStoreArray);
如图所示:

这解决了我的问题,因为它返回给我:

//RETURNS Array ( [0] => 158, 1 => 159 )

您想在所有数组中获得公共值吗?现在这是一种更好的方法。