php 如何获取里面相同的项

zhai斋
  • 95
$data=[
    "0"=>[1,2,3,4],
    "1"=>[2,3,4],
    "2"=>[1,3,4,6],
    "3"=>[1,4,5,7],
    "4"=>[1,4,3]
];
怎么获取这个二维数组中的数组都存在的值。

结果:4

要里面的数组都有这个值,才算。
回复
阅读 1.6k
5 个回答
不瘦下来不改名了
  • 17
✓ 已被采纳

$data=[
    "0"=>[1,2,3,4],
    "1"=>[2,3,4],
    "2"=>[1,3,4,6],
    "3"=>[1,4,5,7],
    "4"=>[1,4,3]
];

$arr0 = $data[0];

foreach ($data as $key => $value) {
    $arr0  = array_intersect($arr0, $value);
}

var_dump($arr0);exit;
// 发现 ... 还挺好用的
$result = array_intersect(...$data);

用php自带的函数啊,一行代码就搞定
array_intersect() 这个函数不考虑数组的键直接返回两个或多个数组的“值得交集”
array_inersect_assoc 这个函数将键和值绑定,一起比较交集部分
array_intersect_key()函数是将两个数组的键值进行比较,返回键值交集的数组。

这还不简单,我的第一反应就是遍历,for 加上 foreach 肯定可以,但是不知道有没有简单的方法,以下是我的代码:

for($i=0; $i<count($data); $i++){

foreach($data[0] as $k=>$v){
    if()
}

}

我就不写代码了,其实原理也很简单,你遍历一下,从头到尾让每个子数组跟下一个子数组做个交集运算,做到最后,就获得了你想要的共同元素。 探读

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏