我有以下(嵌套的)数组:
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 )
?>
答案 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);
所示
这解决了我的问题,因为它返回了我:
//RETURNS Array ( [0] => 158, 1 => 159 )