找回密码
 注册账号

QQ登录

只需一步,快速开始

《泰拉瑞亚下载-1.4.2.3版》 泰拉瑞亚服务器 - MOD模组下载

入驻泰拉战网 新手指引 - 升级 - 师徒

泰拉瑞亚合成表 泰拉卡牌 - 泰拉江湖 - 泰拉刺客

联系泰拉开发组👈进入 积分市场 - 房产交易 - 水晶获取

查看: 3472|回复: 0

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

[复制链接]
蓝袍巫师
法师

2052

主题

2411

回帖

2472

广播

技术小组

积分
16208
泰拉
5791
水晶
15179
铜钥匙
457
银钥匙
3
金钥匙
18

【江湖新秀】【基友证明】【水贴恶魔】【高朋满座】【论坛蘑菇党】【我是小土豪】【宝剑回鞘】【伪娘证书】【超级玛丽】【泰拉达人】【文艺青年证】【社区最高荣誉勋章】【奥运选手】【我很囧证】【宠物·缘定三生】【发帖机器】【潜水高手】【我很萌证】【动漫迷】【有头有脸】【视频爱好者】【萝莉控】【香水有毒】【朋友控】【我素软妹纸】【我是巫婆】【我是公主】【我很聪明证】【新官上任三把火】

QQ
发表于 2021-4-8 11:01:43 | 显示全部楼层 |阅读模式
需求

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


  1. // 快速的判断$a数组是否是$b数组的子集
  2. $a = array(135,138);
  3. $b = array(135,138,137);
复制代码



array_diff 计算差集 PHP 4.0.1 以上可用



  1. $c = array_diff($a, $b);
  2. print_r($c);
  3. $flag = empty($c)?1 : 0;
  4. if ($flag) {
  5.   echo "Yes";
  6. }else {
  7.   echo "No";
  8. }
复制代码


array_intersect 计算交集 (推荐) PHP 4.0.1 以上可用

为啥推荐这个函数 , 是因为这个函数计算完成后可以用IF来判断是否与原来数组相等;



  1. if ($a == array_intersect($a, $b)) {
  2.   $flag = 1;
  3. }else {
  4.   $flag = 0;
  5. }
  6. if ($flag) {
  7.   echo "Yes";  //完全包含
  8. }else {
  9.   echo "No";  //不完全包含
  10. }
复制代码
[发帖际遇]: 墨裔 捡了钱没交公 泰拉 降了 10 . 幸运榜 / 衰神榜
每天签到都被打劫

泰拉宝石
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|友链申请|Archiver|手机版|小黑屋|游芯沙盒 ( 陕ICP备11006283号-1 )

GMT+8, 2024-5-8 14:09 , Processed in 0.109928 second(s), 39 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表