PHP获得数组交集与差集的方法


Posted in PHP onJune 10, 2015

本文实例讲述了PHP获得数组交集与差集的方法。分享给大家供大家参考。具体分析如下:

一、数组的交集 array_intersect()

array_intersect()函数返回一个保留了键的数组,这个数组只由第一个数组中出现的且在其他每个输入数组中都出现的值组成。其形式如下:

array array_intersect(array array1,array array2[,arrayN…])

下面这个例子将返回在$fruit1数组中出现的且在$fruit2和$fruit3中也出现的所有的水果:

<?php
$fruit1 = array("Apple","Banana","Orange");
$fruit2 = array("Pear","Apple","Grape");
$fruit3 = array("Watermelon","Orange","Apple");
$intersection = array_intersect($fruit1, $fruit2, $fruit3);
print_r($intersection);
// output
// Array ( [0] => Apple )
?>

只有在两个元素相等且具有相同的数据类型时,array_intersect()函数才会认为它们是相同的。

关联数组的交集 array_intersect_assoc()

函数array_intersect_assoc()与array_intersect()基本相同,只不过他在比较中还考虑了数组的键。因此,只有在第一个数组中出现,且在所有其他输入数组中也出现的键/值对才返回到结果数组中。

形式如下:

array array_intersect_assoc(array array1,array array2[,arrayN…])

下面的例子返回了出现在$fruit1数组中,也同时出现在$fruit2与$fruit3中的所有键/值对:

<?php
$fruit1 = array("red"=>"Apple","yellow"=>"Banana","orange"=>"Orange");
$fruit2 = array("yellow"=>"Pear","red"=>"Apple","purple"=>"Grape");
$fruit3 = array("green"=>"Watermelon","orange"=>"Orange","red"=>"Apple");
$intersection = array_intersect_assoc($fruit1, $fruit2, $fruit3);
print_r($intersection);
// output
// Array ( [red] => Apple )
?>

二、数组的差集 array_diff()

函数array_diff()返回出现在第一个数组中但其他输入数组中没有的值。这个功能与array_intersect()相反。

array array_diff(array array1,array array2[,arrayN…])

实例如下:

<?php
$fruit1 = array("Apple","Banana","Orange");
$fruit2 = array("Pear","Apple","Grape");
$fruit3 = array("Watermelon","Orange","Apple");
$intersection = array_diff($fruit1, $fruit2, $fruit3);
print_r($intersection);
// output
// Array ( [1] => Banana )
?>

关联数组的差集 array_diff_assoc()

函数array_diff_assoc()与array_diff()基本相同,只是它在比较时还考虑了数组的键。因此,只在第一个数组中出现而不再其他输入数组中出现的键/值对才会返回到结果数组中。其形式如下:

array array_diff_assoc(array array1,array array2[,arrayN…])

下面的例子只返回了[yellow] => Banana,因为这个特殊的键/值对出现在$fruit1中,而在$fruit2和$fruit3中都不存在。

<?php
$fruit1 = array("red"=>"Apple","yellow"=>"Banana","orange"=>"Orange");
$fruit2 = array("yellow"=>"Pear","red"=>"Apple","purple"=>"Grape");
$fruit3 = array("green"=>"Watermelon","orange"=>"Orange","red"=>"Apple");
$intersection = array_diff_assoc($fruit1, $fruit2, $fruit3);
print_r($intersection);
// output
// Array ( [yellow] => Banana )
?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
IP138 IP地址查询小偷实现代码
Feb 15 PHP
关于php curl获取301或302转向的网址问题的解决方法
Jun 02 PHP
PHP如何解决网站大流量与高并发的问题
Jun 25 PHP
微信公众平台开发关注及取消关注事件的方法
Dec 23 PHP
PHP实现Javascript中的escape及unescape函数代码分享
Feb 10 PHP
php实现四舍五入的方法小结
Mar 03 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
Oct 08 PHP
PHP结合Mysql数据库实现留言板功能
Mar 04 PHP
Symfony2学习笔记之插件格式分析
Mar 17 PHP
老生常谈PHP 文件写入和读取(必看篇)
May 22 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 PHP
基于PHP实现用户登录注册功能的详细教程
Aug 04 PHP
php发送html格式文本邮件的方法
Jun 10 #PHP
php简单实现发送带附件的邮件
Jun 10 #PHP
php动态变量定义及使用
Jun 10 #PHP
php中动态变量用法实例
Jun 10 #PHP
PHP获取文件行数的方法
Jun 10 #PHP
CodeIgniter针对lighttpd服务器URL重写的方法
Jun 10 #PHP
PHP实现将textarea的值根据回车换行拆分至数组
Jun 10 #PHP
You might like
php中通过smtp发邮件的类,测试通过
2007/01/22 PHP
PHP如何抛出异常处理错误
2011/03/02 PHP
PHP基础之运算符的使用方法
2013/04/28 PHP
PHP将进程作为守护进程的方法
2015/03/19 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
NodeJS学习笔记之(Url,QueryString,Path)模块
2015/01/13 NodeJs
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
js表单元素checked、radio被选中的几种方法(详解)
2016/08/22 Javascript
使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
2017/03/15 Javascript
浅谈react受控组件与非受控组件(小结)
2018/02/09 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
简述vue路由打开一个新的窗口的方法
2018/11/29 Javascript
vue+echarts实现动态折线图的方法与注意
2020/09/01 Javascript
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
剖析Django中模版标签的解析与参数传递
2015/07/21 Python
解决python使用open打开文件中文乱码的问题
2017/12/29 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
python中的常量和变量代码详解
2018/07/25 Python
python中多个装饰器的调用顺序详解
2019/07/16 Python
Django 路由控制的实现
2019/07/17 Python
python使用writerows写csv文件产生多余空行的处理方法
2019/08/01 Python
python3爬虫中异步协程的用法
2020/07/10 Python
python help函数实例用法
2020/12/06 Python
Python爬虫新手入门之初学lxml库
2020/12/20 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
S’well Bottle保温杯官网:绝缘不锈钢水瓶
2018/05/09 全球购物
这76道Java面试题及答案,祝你能成功通过面试
2016/04/16 面试题
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
2012/05/30 面试题
成功的餐厅经营创业计划书
2014/01/15 职场文书
普通简短的个人自我评价
2014/02/15 职场文书
少儿节目主持串词
2014/04/02 职场文书
社区平安建设方案
2014/05/25 职场文书
公司客户答谢酒会祝酒词
2015/08/11 职场文书
2019年个人工作总结范文
2019/03/25 职场文书
党员学习型组织心得体会
2019/06/21 职场文书
springboot中的pom文件 project报错问题
2022/01/18 Java/Android