我想比较$ ids中的所有子数组,并且只想返回所有三个数组中显示的数字,因此它将3和4作为数组返回。
$ids = [
[1,2,3,4],
[2,3,4],
[3,4,5],
];
期望它返回
array(3,4)
更新:抱歉,我不愿透露细节,我不知道关联数组中有多少个数组,它可能是2个子数组,其他时候可能是5个。我很感谢收到的所有答案
答案 0 :(得分:2)
拼接出第一个子数组,然后循环其余子数组,并使用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
答案 1 :(得分:2)
显然array_intersect
是解决方案How to get common values from two different arrays in PHP。如果您知道子数组及其索引的数量,那么就很简单:
$result = array_intersect($ids[0], $ids[1], $ids[2]);
但是,如果您需要对未知/可变数量的子数组和/或未知索引执行此操作,请使用$ids
作为带有call_user_func_array
的参数数组:
$result = call_user_func_array('array_intersect', $ids);
或者更好地使用Argument unpacking via ...(PHP> = 5.6.0):
$result = array_intersect(...$ids);