【问题标题】:Getting value of nested array's which exist in every array获取每个数组中存在的嵌套数组的值
【发布时间】:2020-02-19 08:57:13
【问题描述】:

我有以下(嵌套)数组:

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,但是嵌套数组是动态生成的,所以我不确定如何使用 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 )
?>

【问题讨论】:

  • 你想得到所有数组的共同值吗?

标签: php arrays multidimensional-array nested array-intersect


【解决方案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 )

【讨论】:

  • 现在这是一种更好的方法。
【解决方案2】:

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

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

见于:php dynamic array_intersect

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-27
    • 2022-01-22
    • 1970-01-01
    • 2015-10-26
    • 2021-11-29
    • 1970-01-01
    • 2020-11-29
    • 2019-11-20
    相关资源
    最近更新 更多