PHP判断一个数组是另一个数组子集的方法详解


Posted in PHP onJuly 31, 2017

本文实例讲述了PHP判断一个数组是另一个数组子集的方法。分享给大家供大家参考,具体如下:

前言

今天完成一个算法的过程中,有几个需求模块,其中就有判断$a数组是否是$b数组的子集,可能最近我写c比较多,直接就用for循环实现了,但是感觉代码量比较大,不够优雅!在qq群里集思广益了一下,发现很多php提供的系统功能函数都是可以供调用的,这里记录一下

需求

最少的时间复杂度判断$a数组是否是$b数组的子集

// 快速的判断$a数组是否是$b数组的子集
$a = array(135,138);
$b = array(135,138,137);

实现方法

这里介绍三种方法,思路其实是相同的,差别在于实现的代码上

for循环遍历

$flag = 1;
foreach ($a as $va) {
  if (in_array($va, $b)) {
    continue;
  }else {
    $flag = 0;
    break;
  }
}
if ($flag) {
  echo "Yes";
}else {
  echo "No";
}

array_diff的使用

PHP判断一个数组是另一个数组子集的方法详解

代码

$c = array_diff($a, $b);
print_r($c);
$flag = empty($c)?1 : 0;
if ($flag) {
  echo "Yes";
}else {
  echo "No";
}

array_intersect的使用

PHP判断一个数组是另一个数组子集的方法详解

代码

if ($a == array_intersect($a, $b)) {
  $flag = 1;
}else {
  $flag = 0;
}
if ($flag) {
  echo "Yes";
}else {
  echo "No";
}

后记

一个好的导师不仅可以教会我学习的方法,更可以教会我做人做事的方法,心怀感激,有担当

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

PHP 相关文章推荐
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
May 04 PHP
PHP 简易输出CSV表格文件的方法详解
Jun 20 PHP
php curl post 时出现的问题解决
Jan 30 PHP
THINKPHP2.0到3.0有哪些改进之处
Jan 04 PHP
php基于jquery的ajax技术传递json数据简单实例
Apr 15 PHP
配置Nginx+PHP的正确思路与过程
May 10 PHP
php UNIX时间戳用法详解
Feb 16 PHP
PHP延迟静态绑定的深入讲解
Apr 02 PHP
PHP让网站移动访问更加友好方法
Feb 14 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
Feb 16 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
Oct 10 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
Oct 11 PHP
PHP中TP5 上传文件的实例详解
Jul 31 #PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 #PHP
PHP将数据导出Excel表中的实例(投机型)
Jul 31 #PHP
浅谈thinkphp5 instance 的简单实现
Jul 30 #PHP
PHP用PDO如何封装简单易用的DB类详解
Jul 30 #PHP
详解PHP防止直接访问.php 文件的实现方法
Jul 28 #PHP
php简单实现单态设计模式的方法分析
Jul 28 #PHP
You might like
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
php缓存技术详细总结
2013/08/07 PHP
php常用字符串比较函数实例汇总
2014/11/24 PHP
php利用cookie实现自动登录的方法
2014/12/10 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
javascript编程起步(第六课)
2007/01/10 Javascript
js tab 选项卡
2009/04/26 Javascript
firefox下对ajax的onreadystatechange的支持情况分析
2009/12/14 Javascript
IE无法设置短域名下Cookie
2010/09/23 Javascript
jQuery前台数据获取实现代码
2011/03/16 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
js操作iframe父子窗体示例
2014/05/22 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
2015/03/18 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
easyui messager alert 三秒后自动关闭提示的实例
2016/11/07 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
JavaScript设计模式之模板方法模式原理与用法示例
2018/08/07 Javascript
解决ant-design-vue中menu菜单无法默认展开的问题
2020/10/31 Javascript
[01:44]剑指西雅图 展望TI之CIS战队专访
2014/06/25 DOTA
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
python内置数据类型之列表操作
2018/11/12 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
python 使用建议与技巧分享(四)
2020/08/18 Python
美国波西米亚风格服装品牌:Show Me Your Mumu
2018/01/05 全球购物
北京捷通华声语音技术有限公司Java软件工程师笔试题
2012/04/10 面试题
测控技术与仪器个人求职信范文
2013/12/30 职场文书
企业年度评优方案
2014/06/02 职场文书
敬老院标语
2014/06/27 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
中学生学习保证书
2015/02/26 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书