PHP 两个数组取交集问题

奋斗小青年 发布于 2013/07/29 09:46
阅读 2K+
收藏 2
PHP

比如有a、b两个数组,如下:

$a= array('a','c');

$b = array('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);

现在通过比较a、b数组,希望得到c数组 : $c = array('a'=>1,'c'=>3);

有函数可以实现吗?在线急等。。

加载中
0
OSC首席键客
OSC首席键客
有取交集的内置函数啊!
0
冷炎小狼
冷炎小狼

array_intersect_key(); 


用这个方法,使用键名计算数组的交集


0
mark35
mark35

引用来自“冷炎小狼”的答案

array_intersect_key(); 


用这个方法,使用键名计算数组的交集


这个函数不适合楼主的需求。得自己弄

$res = [];
foreach ($a as $k) 
{
  isset($b[$k]) && ! isset($res[$k]) && $res[$k] = $b[$k];
}
var_export($res);
0
酒逍遥
酒逍遥

$c=array_intersect_key($b,$a) 可以得到结果..

但是返回的交集的键值是取的 第一参数也就是 $b 数组的键值..

在不能确认到底要返回哪个数组的的键值时,只能自己写个函数做循环了

酒逍遥
酒逍遥
回复 @leo108 : 嗯..确实..看走眼了..要先用array_flip 交换键和值
leo108
leo108
$a数组的key是0,1,$b的key是a,b,c,这个函数明显不适合
0
d
deer
array_intersect_key($b,array_flip($a));
返回顶部
顶部