PHP求并集,交集,差集
PHP求并集,交集,差集
一、总结
一句话总结:在php中如果我想要对两个数组进行如并集、交集和差集操作,我们可直接使用php自带的函数来操作如array_merge(),array_intersect(),array_diff().
array_merge() array_intersect() array_diff()
1、php中如何求并集?
array_merge() +
计算数组的合并 array_merge与“+”的区别
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()把相同的元素去掉
2、php合并 array_merge与“+”的区别是什么?
+ 合并索引
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()把相同的元素去掉
3、php中如何求交集?
array_intersect()
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
- )
4、php中如何求差集?
array_diff()
计算数组的差集,代码如下:
- $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));
二、PHP数组的几个操作,求并集,交集,差集,数组与字符串的相互转换及数组去重
https://blog.csdn.net/shaobingj126/article/details/51814726
在php中如果我想要对两个数组进行如并集、交集和差集操作,我们可直接使用php自带的函数来操作如array_merge(),array_intersect(),array_diff().
计算数组的合并 array_merge与“+”的区别
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));
数组转换为字符串:
<?php
$arr = array('Hello','World!','I','love','Shanghai!');
echo implode(" ",$arr);
?>
字符串转换为数组:
<?php
$str="1432532 ,4444";
$arr = explode(",",$str);
echo count($arr)."</br>";
print_r($arr);
?>
数组元素值去重
<?php
$a=array("a"=>"red","b"=>"green","c"=>"red");
print_r(array_unique($a)
);
?>
针对有空格的字符串转换成无空格的字符串
<?php
$str="1432532 ,67878";
$arr = explode(",",$str);
//echo count($arr)."</br>";
$str_u='';
for($i=0;$i<count($arr);$i++)
{
$str_u .=trim($arr[$i]).',';
}
echo $str_u;
?>
PHP求并集,交集,差集的更多相关文章
- 【Set】Set集合求并集,交集,差集
/** * @author: Sam.yang * @date: 2020/11/16 11:14 * @desc: Set集合操作工具类 */ public class SetOptUtils { ...
- java数组并集/交集/差集(补集)
1.说明 使用java容器类的性质选择容器 2.实现 package com.wish.datastrustudy; import java.util.HashSet; import java.uti ...
- python求两个列表的并集.交集.差集
求两个列表的差集 >>> a = [1,2,3] >>> b=[1,2] >>> ################################ ...
- Linux 求文件交集 差集等
使用comm命令 假设两个文件FILE1和FILE2用集合A和B表示,FILE1内容如下: a b c e d a FILE2内容如下: c d a c 基本上有两个方法,一个是comm命令,一个是g ...
- [Linux] 取两个文件的并集/交集/差集
uniq -d是只打印重复行 -u是只打印独一无二的行文件A : abcd文件B: cdef取并集:A + B sort A B|uniq 取交集: sort A B|uniq -d 取差集:A - ...
- python 两个list 求交集,并集,差集
def diff(listA,listB): #求交集的两种方式 retA = [i for i in listA if i in listB] retB = list(set(listA).inte ...
- java(List或Array数组)求交集、并集、差集, 泛型工具类
业务需要求不同类型的交集.并集.差集为避免代码冗余编写工具类. 注:list 转数组需传入数组,如果将原数组传入将会改变原数组的值,同时泛型数组又不可以实例化,解决方案:Arrays.copyOf(n ...
- JS 对象 数组求并集,交集和差集
一.JS数组求并集,交集和差集 需求场景 最近,自己项目中有一些数组操作,涉及到一些数学集的运算,趁着完成后总结一下. 简化问题之后,现有两数组a = [1, 2, 3],b = [2, 4, 5], ...
- C++ 求向量的交集、并集、差集
#include<iostream> #include<stdio.h> #include<list> #include<algorithm> //se ...
随机推荐
- Java缓存学习之六:Spring单独使用EhCache
通过在Application Context中配置EhCacheManagerFactoryBean和EhCacheFactoryBean,我们就可以把对应的EhCache的CacheManage ...
- jstat命令查看jvm的GC情况
jstat命令可以查看堆内存各部分的使用量,以及加载类的数量.命令的格式如下: jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数] 注意!!!:使用的jdk版本是jdk8. ...
- JS中怎么调用<%%>的值
JS中怎么调用<%%>的值 示例代码一: <% String usercode = request.getParameter("usercode");//用req ...
- jackson 常用注解,比如忽略某些属性,驼峰和下划线互转
一般情况下使用JSON只使用了java对象与字符串的转换,但是,开发APP时候,我们经常使用实体类来做转换:这样,就需要用到注解: Jackson默认是针对get方法来生成JSON字符串的,可以使用注 ...
- [noip模拟题]排队
[问题描述] 小sin所在的班有n名同学,正准备排成一列纵队,但他们不想按身高从矮到高排,那样太单调,太没个性.他们希望恰好有k对同学是高的在前,矮的在后,其余都是矮的在前,高的在后.如当n=5,k= ...
- 《Python程序设计(第3版)》[美] 约翰·策勒(John Zelle) 第 1 章 答案
判断对错1.计算机科学是计算机的研究.2.CPU 是计算机的“大脑”.3.辅助存储器也称为 RAM.4.计算机当前正在处理的所有信息都存储在主存储器中.5.语言的语法是它的意思,语义是它的形式.6.函 ...
- python程序转为exe文件
python开发者向普通windows用户分享程序,要给程序加图形化的界面(传送门:这可能是最好玩的python GUI入门实例! http://www.jianshu.com/p/8abcf73ad ...
- 标准IO与文件IO 的区别【转】
本文转载自:http://blog.sina.com.cn/s/blog_63f31f3401013jrn.html 先来了解下什么是标准IO以及文件IO. 标准IO:标准I/O是ANSI C建立的一 ...
- POJ 2449 Remmarguts' Date(第K短路 + A* + 最短路)题解
题意:找出第k短路,输出长度,没有输出-1 思路:这题可以用A*做.A*的原理是这样,我们用一个函数:f = g + h 来表示当前点的预期步数,f代表当前点的预期步数,g代表从起点走到当前的步数,h ...
- 【分词器及自定义】Elasticsearch中文分词器及自定义分词器
中文分词器 在lunix下执行下列命令,可以看到本来应该按照中文”北京大学”来查询结果es将其分拆为”北”,”京”,”大”,”学”四个汉字,这显然不符合我的预期.这是因为Es默认的是英文分词器我需要为 ...