return 显示在所有三个子数组中的数字数组
return an array of numbers that show up in all three sub arrays
我想比较 $ids 中的所有子数组,我只想 return 显示在所有三个数组中的数字,所以它将 return 3 和 4 作为数组。
$ids = [
[1,2,3,4],
[2,3,4],
[3,4,5],
];
期待 return
array(3,4)
更新:抱歉,我遗漏了我不知道关联数组中有多少个数组的细节,它可能是 2 个子数组,有时可能是 5 个。我感谢所有的答案已收到。
拼接出第一个子数组然后循环剩下的用array_intersect过滤结果到3,4
.
$res = array_splice($ids,0,1)[0];
foreach($ids as $id){
$res = array_intersect($res, $id);
}
var_dump($res); // 3,4
显然array_intersect
就是解How to get common values from two different arrays in PHP。如果你知道子数组的数量和它们的索引那么它就很简单:
$result = array_intersect($ids[0], $ids[1], $ids[2]);
但是,如果您需要对 unknown/variable 个子数组 and/or 未知索引执行此操作,请使用 $ids
作为带有 call_user_func_array
的参数数组:
$result = call_user_func_array('array_intersect', $ids);
或者更好地使用 Argument unpacking via ... (PHP >= 5.6.0):
$result = array_intersect(...$ids);
我想比较 $ids 中的所有子数组,我只想 return 显示在所有三个数组中的数字,所以它将 return 3 和 4 作为数组。
$ids = [
[1,2,3,4],
[2,3,4],
[3,4,5],
];
期待 return
array(3,4)
更新:抱歉,我遗漏了我不知道关联数组中有多少个数组的细节,它可能是 2 个子数组,有时可能是 5 个。我感谢所有的答案已收到。
拼接出第一个子数组然后循环剩下的用array_intersect过滤结果到3,4
.
$res = array_splice($ids,0,1)[0];
foreach($ids as $id){
$res = array_intersect($res, $id);
}
var_dump($res); // 3,4
显然array_intersect
就是解How to get common values from two different arrays in PHP。如果你知道子数组的数量和它们的索引那么它就很简单:
$result = array_intersect($ids[0], $ids[1], $ids[2]);
但是,如果您需要对 unknown/variable 个子数组 and/or 未知索引执行此操作,请使用 $ids
作为带有 call_user_func_array
的参数数组:
$result = call_user_func_array('array_intersect', $ids);
或者更好地使用 Argument unpacking via ... (PHP >= 5.6.0):
$result = array_intersect(...$ids);