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 相关文章推荐
php smarty的预保留变量总结
Dec 04 PHP
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
Sep 30 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
Jun 24 PHP
一个简单且很好用的php分页类
Oct 26 PHP
PHP中的替代语法简介
Aug 22 PHP
destoon出现验证码不显示时的紧急处理方法
Aug 22 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
Sep 06 PHP
thinkphp浏览历史功能实现方法
Oct 29 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
Nov 18 PHP
php动态生成缩略图并输出显示的方法
Apr 20 PHP
php微信浏览器分享设置以及回调详解
Aug 01 PHP
thinkphp jquery实现图片上传和预览效果
Jul 22 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基于socket实现SMTP发送邮件的方法
2015/03/05 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
laravel配置Redis多个库的实现方法
2019/04/10 PHP
详解CSS样式中的 !important * _ 符号
2021/03/09 HTML / CSS
Javascript 多浏览器兼容总结(实战经验)
2013/10/30 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
jquery实现两个图片渐变切换效果的方法
2015/06/25 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
2015/12/04 Javascript
JavaScript检查子字符串是否在字符串中的方法
2016/02/03 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
Vue入门之数据绑定(小结)
2018/01/08 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
JS中双击和单击事件冲突的解决方法
2018/04/09 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
2019/02/28 Javascript
Vue项目中使用jquery的简单方法
2019/05/16 jQuery
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
Python中time模块和datetime模块的用法示例
2016/02/28 Python
python如何求数组连续最大和的示例代码
2020/02/04 Python
django 解决自定义序列化返回处理数据为null的问题
2020/05/20 Python
Python中and和or如何使用
2020/05/28 Python
Python进行统计建模
2020/08/10 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
C语言开发工程师测试题
2016/12/20 面试题
分别介绍一下Session Bean和Entity Bean
2015/03/13 面试题
EJB的几种类型
2012/08/15 面试题
会计辞职信范文
2014/01/15 职场文书
青年志愿者活动方案
2014/08/17 职场文书
个人作风建设心得体会
2014/10/22 职场文书
2015年八一建军节慰问信
2015/03/23 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
心灵捕手观后感
2015/06/02 职场文书
婚礼家长致辞
2015/07/27 职场文书
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python
Redis实战高并发之扣减库存项目
2022/04/14 Redis