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中支持多种编码的中文字符串截取函数!
Mar 20 PHP
php不用正则采集速度探究总结
Mar 24 PHP
php面向对象全攻略 (四)构造方法与析构方法
Sep 30 PHP
PHP生成excel时单元格内换行问题的解决方法
Aug 26 PHP
PHP代码保护--Zend Guard的使用详解
Jun 03 PHP
smarty中post用法实例
Nov 28 PHP
php实现的网页版剪刀石头布游戏示例
Nov 25 PHP
php出租房数据管理及搜索页面
May 23 PHP
[原创]PHP实现SQL语句格式化功能的方法
Jul 28 PHP
laravel学习笔记之模型事件的几种用法示例
Aug 15 PHP
Laravel框架实现的记录SQL日志功能示例
Jun 19 PHP
PHP JWT初识及其简单示例
Oct 10 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
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
2010/05/15 PHP
关于PHPDocument 代码注释规范的总结
2013/06/25 PHP
Laravel框架表单验证详解
2014/09/04 PHP
Yii中使用PHPExcel导出Excel的方法
2014/12/26 PHP
php对数组内元素进行随机调换的方法
2015/05/12 PHP
PHP创建多级目录的两种方法
2016/10/28 PHP
phpstudy默认不支持64位php的解决方法
2017/02/20 PHP
Exjs 入门篇
2010/04/07 Javascript
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
基于jQuery的简单的列表导航菜单
2011/03/02 Javascript
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
如何设置一定时间内只能发送一次请求
2014/02/28 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
jQuery实现背景滑动菜单
2016/12/02 Javascript
Vue如何实现组件的源码解析
2017/06/08 Javascript
js编写简单的计时器功能
2017/07/15 Javascript
Vue瀑布流插件的使用示例
2018/09/19 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
使用Python压缩和解压缩zip文件的教程
2015/05/06 Python
python中字符串变二维数组的实例讲解
2018/04/03 Python
pyqt5 实现多窗口跳转的方法
2019/06/19 Python
Python命名空间及作用域原理实例解析
2020/08/12 Python
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
风险评估实施方案
2014/03/09 职场文书
安全宣传标语
2014/06/10 职场文书
竞选班干部演讲稿500字
2014/08/20 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书
浅谈python中的多态
2021/06/15 Python
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers
什么是SOLID
2022/03/24 Javascript
Golang连接并操作MySQL
2022/04/14 MySQL