php怎么对2个数组进行比对_php两数组比对array_diff找差异法【教程】
技术百科
看不見的法師
发布时间:2025-12-18
浏览: 次 PHP中求两数组差异可用array_diff(值比较)、array_diff_assoc(键值比较)、array_merge+array_diff(对称差集)、array_intersect反推、或foreach手动遍历五种方法。
如果您需要找出两个PHP数组之间的差异,可以使用内置函数array_diff来实现。以下是几种常用的方法:
一、使用array_diff函数获取第一个数组中存在但第二个数组中不存在的元素
array_diff函数比较第一个数组与其他数组的值,返回第一个数组中在其他数组中都不存在的值组成的数组,键名保持不变。
1、定义两个待比对的数组,例如:$arr1 = [1, 2, 3, 4]; $arr2 = [3, 4, 5, 6];
2、调用array_diff($arr1, $arr2),得到结果为[1 => 2, 0 => 1](顺序可能因PHP版本而异,但值为1和2)。
3、注意该函数仅比较值,不比较键名;且只返回$arr1中有而$arr2中没有的值。
二、使用array_diff_assoc函数同时比对键名和值
array_diff_assoc函数不仅比较数组的值,还比较键名,只有当键名和对应值都相同时才视为相同项。
1、定义关联数组,例如:$arr1 = ['a' => 1, 'b' => 2, 'c' => 3]; $arr2 = ['a' => 1, 'b' => 99, 'd' => 4];
2、执行array_diff_assoc($arr1, $arr2),返回['b' => 2, 'c' => 3]。
3、该函数保留原始键名,适用于需区分键名是否一致的场景。
三、使用array_merge与array_diff组合获取对称差集
要获得两个数组的对称差集(即仅在一个数组中出现的元素),需分别调用array_diff并合并结果。
1、计算$diff1 = array_diff($arr1, $arr2);
2、计算$diff2 = array_diff($arr2, $arr1);
3、使用array_merge($diff1, $diff2)合并两者,得到所有差异项。
4、此方法可完整覆盖双向差异,避免遗漏任一方向的独有元素。
四、使用array_intersect获取两数组交集后反向推导差异
先求出共同元素,再通过两次array_diff排除交集,从而间接得出各自独有部分。
1、计算$common = array_intersect($arr1, $arr2);
2、计算$only_in_arr1 = arra
y_diff($arr1, $common);
3、计算$only_in_arr2 = array_diff($arr2, $common);
4、该方式逻辑清晰,适合需要分别处理各自独有数据的业务流程。
五、使用foreach循环手动遍历比对并记录差异
当需要自定义比对逻辑(如忽略大小写、浮点精度容差、嵌套结构等)时,可采用显式循环控制。
1、初始化两个空数组$only1 = [];$only2 = [];
2、遍历$arr1,对每个值检查in_array($val, $arr2)是否为false,是则加入$only1;
3、遍历$arr2,对每个值检查in_array($val, $arr1)是否为false,是则加入$only2;
4、此方法灵活性最高,支持任意条件判断和复杂数据类型处理。
# 适用于
# 第二个
# 中有
# 两次
# 循环
# foreach
# 数据类型
# php
# 比对
# 遍历
# 组中
# 浮点
# 关联数组
# 键名
# 求出
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Mac如何开启夜览模式_Mac护眼模式设置与定时
- Python数据挖掘进阶教程_分类回归与聚类案例解
- VSC怎样在VSC中调试PHPAPI_接口调试技巧
- Windows10怎么用“讲述人”读屏辅助 Win
- 如何使用Golang实现容器健康检查_监控和自动重
- 如何在 ACF 中正确更新嵌套多层的 Group
- windows 10专注助手怎么关闭_window
- php打包exe如何加密代码_防反编译保护方法【技
- php文件怎么变mp4保存_php输出视频流保存为
- Win11怎么连接投影仪_Win11多显示器投屏设
- Win11怎么制作U盘启动盘_Win11原版系统安
- Windows10怎么备份注册表_Windows1
- Windows10如何更改鼠标图标_Win10鼠标
- Linux如何安装Tomcat应用服务器_Linu
- Win11怎么查看局域网电脑_Windows 11
- Win11怎么更改电脑名称_Windows 11修
- c++中如何使用虚函数实现多态_c++多态性实现原
- Win11声音忽大忽小怎么办 Win11音频增强功
- Linux如何安装JDK11_Linux环境变量配
- 如何在 Laravel 中通过嵌套关联关系进行 o
- Win11怎样安装微信开发者工具_Win11安装开
- C#如何使用XPathNavigator高效查询X
- php怎么下载安装后设置错误日志_phpini l
- VSC怎样在Linux运行PHP_Ubuntu系统
- Win11怎么查看已连接wifi密码 Win11查
- Win11怎么更改鼠标指针_Windows 11自
- Win10电脑怎么设置网络名称_Windows10
- Windows蓝屏错误0x00000018怎么处理
- php485读数据时阻塞怎么办_php485非阻塞
- 如何在Golang中处理JSON字段缺失_Gola
- Win11怎么关闭自动修复_跳过Win11开机自动
- Win11关机界面怎么改_Win11自定义关机画面
- Win10如何卸载预装Edge扩展_Win10卸载
- 如何在 Go 中高效缓存与分发网络视频流
- Avalonia如何实现跨窗口通信 Avaloni
- Python数据抓取合法性_合规说明【指导】
- c# 在高并发下使用反射发射(Reflection
- c++中如何使用auto关键字_c++11类型推导
- C++ static_cast和dynamic_c
- Python装饰器设计思路_功能增强机制说明【指导
- Win11怎么更改输入法顺序_Win11调整语言首
- Win11怎样安装剪映专业版_Win11安装剪映教
- Windows10如何更改鼠标灵敏度_Win10鼠
- 使用类变量定义字符串常量时如何实现类型安全的 Li
- Win10如何卸载自带Edge_Win10彻底卸载
- Win11如何更新显卡驱动 Win11检查和安装设
- windows如何修改文件默认打开方式_windo
- Win11无法识别耳机怎么办_解决Win11插耳机
- Win11怎么关闭防火墙通知_屏蔽Win11安全中
- Go 中 defer 在 goroutine 内部

QQ客服