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 )
您想在所有数组中获得公共值吗?现在这是一种更好的方法。