加入收藏 | 设为首页 | 会员中心 | 我要投稿 怀化站长网 (https://www.0745zz.cn/)- 语音技术、云资源管理、物联设备、云计算、决策智能!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php中数组的并集、交集和差集函数介绍

发布时间:2022-07-24 10:19:14 所属栏目:PHP教程 来源:互联网
导读:在php中如果我想要对两个数组进行如并集、交集和差集操作,我们可直接使用php自带的函数来操作如array_merge(),array_intersect(),array_diff(). 计算数组的合并 array_merge与+的区别 2017年可用的翻墙软件,解决Youtube、Facebook、Twitter等上不了的问题 ar
  在php中如果我想要对两个数组进行如并集、交集和差集操作,我们可直接使用php自带的函数来操作如array_merge(),array_intersect(),array_diff().
 
  计算数组的合并 array_merge与“+”的区别
 
  2017年可用的翻墙软件,解决Youtube、Facebook、Twitter等上不了的问题
 
  array_merge() 函数把两个或多个数组合并为一个数组。
 
  如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的),如果数组是数字索引的,则键名会以连续方式重新索引。
 
  注释:如果仅仅向 array_merge() 函数输入了一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引.代码如下:
 
  $a = array(1 => 'a', 'b', 'c');
  $b = array(1 => 'aa', 2, 'c');
  $union = array_merge($a, $b);
  $plus = $a + $b;
  print_r($union);
  print_r($plus);
  //结果依次为:
  Array
  {
  [0]=> a
  [1]=> b
  [2]=> c
  [3]=> aa
  [4]=> 2
  [5]=> c
  }
  Array
  (
  [1] => a
  [2] => b
  [3] => c
  )
  要合并的两个数组中有相同的字符串键的时候,使用array_merge()会覆盖掉原来的值,而使用“+”合并数组则会和用“+”号合并数组相同数字键一样把最先出现的值作为最终结果返回,如下例:
 
  $a2 = array('str' => 'a', 'b', 'c');
  $b2 = array('str' => 'aa', 2, 'c');
  $union2 = array_merge($a2, $b2);
  $plus2 = $a2 + $b2;
  print_r($union2);
  print_r($plus2);
  //结果依次为:
  Array
  (
  [str] => aa
  [0] => b
  [1] => c
  [2] => 2
  [3] => c
  )
  Array
  (
  [str] => a
  [0] => b
  [1] => c
  )
  注:如果想用array_merge合并两个数组,返回结果可能还会有相同的元素,这时候可以用array_unique()把相同的元素去掉
 
  计算数组的交集
 
  array_intersect() 函数返回两个或多个数组的交集数组,结果数组包含了所有在被比较数组中,也同时出现在所有其他参数数组中的值,键名保留不变,注释:仅有值用于比较,代码如下:
 
  $a = array('jpg','png','gif','bmp');
  $b = array('JPG','txt','docx','bmp');
  $intersection = array_intersect($a, $b);
  还可以通过函数,获取自己想要的(比如元素不区分大小写),代码如下:
 
  $intersection2 = array_intersect(array_map('strtolower',$a), array_map('strtolower',$b));
  print_r($intersection);
  print_r($intersection2);
  //结果依次为:
  Array
  (
  [3] => bmp
  )
  Array (
  [0] => jpg
  [3] => bmp
  )
  计算数组的差集,代码如下:
 
  $old = array('jpg','png','gif','bmp');
  $new = array('JPG','txt','docx','bmp');
  $difference = array_diff($old, $new);
  注:返回结果的元素包含$old的元素,不包括$new的元素
 
  print_r($difference);
 
  结果为:
 
  Array
  (
  [0] => jpg
  [1] => png
  [2] => gif
  )
  也可以用函数先进行处理,再计算差集
 
  array_diff() 函数返回两个数组的差集数组。该数组包括了所有在被比较的数组中,但是不在任何其他参数数组中的键值,在返回的数组中,键名保持不变。
 
  语法:array_diff(array1,array2,array3...)
 
  代码如下:
 
  $difference = array_diff(array_map('strtolower',$old),
  array_map('strtolower',$new));
   

(编辑:怀化站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读