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

时间:2019-10-23 07:10:07

标签: 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) } }

如您所见,它包含3个子数组。子数组都包含整数“ 158”作为值,还包含“ 159”。我想以某种方式循环通过子数组并检查所有子数组是否都包含该值。然后我只想返回一个只有这些值的数组。

我知道我可以为此使用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 )
?>

2 个答案:

答案 0 :(得分:1)

您可以使用splat运算符(...)一次性将所有子数组传递到array_intersect()中。

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

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

答案 1 :(得分:0)

经过一番搜索,我发现了以下内容:

$result = call_user_func_array('array_intersect', $productStoreArray);

如上php dynamic array_intersect

所示

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

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