array_diff()和array_diff_assoc()
最近在开发项目的时候有需要数据对比,然后就用到了array_diff函数,用了以后发现不是自己想要的结果。先看下面的代码。
<?php
$array1 = array('a' => 'caitou','b' => 1,'c' => '666','d' => true
);
$array2 = array('a' => 'caitou','b' => 2,'c' => '666','d' => true
);
print_r(array_diff($array1,$array2));
期望的结果是
Array
([b] => 1
)
但是输出的结果却是
Array
(
)
后来网上找了很多,看了别人的博客再细看了PHP官方文档发现是自己粗心。官方文档是这样写的
array_diff ( array `$array1` , array `$array2` [, array `$...` ] ) : array
对比 array1 和其他一个或者多个数组,返回在 array1 中但是不在其他 array 里的值。
两个单元仅在 (string) $elem1 === (string) $elem2 时被认为是相同的。也就是说,当字符串的表达是一样的时候。
array_diff
是比较两个数组的值,跟键是没有关系的。而且值比较的时候是把值转成字符串在比较的。(string)$array1['b']===(string)$array2['d']
。
注:一个布尔值 boolean 的TRUE被转换成 string 的 “1”。
所以输出的数组是空。
后来发现我需要的是array_diff_assoc。我们看下面的代码。
<?php
$array1 = array('a' => 'caitou','b' => 1,'c' => '666','d' => true
);
$array2 = array('a' => 'caitou','b' => 2,'c' => '666','d' => true
);
print_r(array_diff_assoc($array1,$array2));
输出结果
Array
([b] => 1
)
官方文档
array_diff_assoc ( array `$array1` , array `$array2` [, array `$...` ] ) : array
array_diff_assoc() 返回一个数组,该数组包括了所有在
array1
中但是不在任何其它参数数组中的值。注意和 array_diff() 不同的是键名也用于比较。键值对 key => value 中的两个值仅在 (string) $elem1 === (string) $elem2 时被认为相等。也就是说使用了严格检查,字符串的表达必须相同。
array_diff_assoc
键名也会用于比较的。如:(string)$array1['b']===(string)array2['b']
。
array_diff()和array_diff_assoc()相关推荐
- php array_diff_assoc,关于array_diff_assoc的详细介绍
定义和用法array_diff_assoc() 函数用于比较两个(或更多个)数组的键名和键值 ,并返回差集.该函数比较两个(或更多个)数组的键名和键值,并返回一个差集数组,该数组包括了所有在被比较的数 ...
- 后盾网经典原创视频教程php,《后盾网经典原创视频教程:PHP》139集
目录 0_1 后盾网_IIS环境下PHP开发环境安装 0 后盾网_PHP集成环境安装视频教程 1 PHP视频教程 PHP基础(一) 2 PHP视频教程 PHP基础(二) 3 PHP视频教程 PHP基础 ...
- php数组基础知识,PHP 数组基础知识小结
php函数有很多,需要时查询api. /* #数组 没有限制大小:$arr[0]=1;$arr[1]=2; $arr=array("0","1");$list( ...
- PHP:第四章——PHP数组array_diff计算数组差集
<pre> <?php header("Content-Type:text/html;charset=utf-8"); /*知识点一:array_diff - 计 ...
- php array assoc,PHP array_diff_assoc() 函数用法及示例
PHP array_diff_assoc() 函数用法及示例 定义和用法 array_diff_assoc()函数比较两个(或多个)数组并返回差值. 此函数比较两个(或多个)数组的键和值,并返回一个包 ...
- php手册数组函数,PHP - Manual手册 - 函数参考 - Array 数组函数 - array_diff计算数组的差集...
PHP - Manual手册 - 函数参考 - Array 数组函数 - array_diff计算数组的差集 array_diff (PHP 4 >= 4.0.1, PHP 5) array_d ...
- php数组比对算法,php学习之两种方法使用比较数组差异的array_diff()函数
本篇文章将简单介绍php比较两个数组的差异array_diff()函数,感兴趣的朋友可以了解一下. php内置函数中有一个array_diff():意思比较两个数组的键值,并返回差集. 下面是通过数组 ...
- PHP array_diff_assoc
1.函数的作用:比较两个数组的不同,包括键值的区别: 2.函数的参数: @params array $array1 被比较的数组 @params array $array2 参与比较的数组 ...
- php array_intersect() 和 array_diff() 函数
在PHP中,使用 array_intersect 求两个数组的交集比使用 array_diff 求同样两个数组的并集要快.如果要求数组 $a 与数组 $b 的差集的个数,应该使用 count($a) ...
最新文章
- java内存模型-JMM
- 【福利】思科/华为/华三模拟器软件分享,附下载链接
- 与Selenium的集成测试
- linux与windows编码转化
- LeetCode 674. Longest Continuous Increasing Subsequence
- 关于信噪比-draft
- 安大计算机学院院长汤进,淮北师范大学
- Android操作系统手机遇冷 国外辉煌国内难现
- c#养老院老人信息管理系统源码 论文_[源码和文档分享]基于JSP和MYSQL实现的学生信息管理系统...
- 问题匹配/文本匹配数据集(自用)
- openCV 简单实现身高测量(二)
- Qt基于FFmpeg解码本地视频生成RGB数据
- Linux安装中文输入法(Google拼音输入法)
- Possible missing firmware /lib/firmware/rtl_nic/rtl8168fp-3.fw for module r8169
- Unity开发2 3D对象的简单操作
- 利用tensorflow训练自己的图片数据集——数据准备
- 如何让文字下划线border-bottom和文字的长度一致
- 创新PC应用、打通云端体验,360小程序引发SaaS软件变革
- AIX小型机在DLPAR之间移动磁带机
- 方正证券国产CPU行业深度报告
热门文章
- Innovus零基础lab学习全面复盘总
- 快传号上传视频显示服务器忙,视频如何跨平台上传,快传号如何同时同步很多个小视频?...
- CSS实现鼠标悬停缩放
- 喧喧发布 2.5.3 版本,主要提升系统稳定性,优化交互体验
- figma的一些用法(一)
- 获取某一年的起始时间和结束时间
- 吐血整理:手拿几个大厂offer的秘密武器!(免费领取)
- 用moment获取一年内指定周的起始时间和结束时间、用户所选时间和前端传参时间不一致问题
- MarkDown Pad2的Windows秘钥
- Model-Agnostic Meta-Learning (MAML) 理解