最近在开发项目的时候有需要数据对比,然后就用到了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()相关推荐

  1. php array_diff_assoc,关于array_diff_assoc的详细介绍

    定义和用法array_diff_assoc() 函数用于比较两个(或更多个)数组的键名和键值 ,并返回差集.该函数比较两个(或更多个)数组的键名和键值,并返回一个差集数组,该数组包括了所有在被比较的数 ...

  2. 后盾网经典原创视频教程php,《后盾网经典原创视频教程:PHP》139集

    目录 0_1 后盾网_IIS环境下PHP开发环境安装 0 后盾网_PHP集成环境安装视频教程 1 PHP视频教程 PHP基础(一) 2 PHP视频教程 PHP基础(二) 3 PHP视频教程 PHP基础 ...

  3. php数组基础知识,PHP 数组基础知识小结

    php函数有很多,需要时查询api. /* #数组 没有限制大小:$arr[0]=1;$arr[1]=2; $arr=array("0","1");$list( ...

  4. PHP:第四章——PHP数组array_diff计算数组差集

    <pre> <?php header("Content-Type:text/html;charset=utf-8"); /*知识点一:array_diff - 计 ...

  5. php array assoc,PHP array_diff_assoc() 函数用法及示例

    PHP array_diff_assoc() 函数用法及示例 定义和用法 array_diff_assoc()函数比较两个(或多个)数组并返回差值. 此函数比较两个(或多个)数组的键和值,并返回一个包 ...

  6. php手册数组函数,PHP - Manual手册 - 函数参考 - Array 数组函数 - array_diff计算数组的差集...

    PHP - Manual手册 - 函数参考 - Array 数组函数 - array_diff计算数组的差集 array_diff (PHP 4 >= 4.0.1, PHP 5) array_d ...

  7. php数组比对算法,php学习之两种方法使用比较数组差异的array_diff()函数

    本篇文章将简单介绍php比较两个数组的差异array_diff()函数,感兴趣的朋友可以了解一下. php内置函数中有一个array_diff():意思比较两个数组的键值,并返回差集. 下面是通过数组 ...

  8. PHP array_diff_assoc

    1.函数的作用:比较两个数组的不同,包括键值的区别: 2.函数的参数: @params  array  $array1  被比较的数组 @params array   $array2  参与比较的数组 ...

  9. php array_intersect() 和 array_diff() 函数

    在PHP中,使用 array_intersect 求两个数组的交集比使用 array_diff 求同样两个数组的并集要快.如果要求数组 $a 与数组 $b 的差集的个数,应该使用 count($a) ...

最新文章

  1. 人工智能最受欢迎的十大TED演讲
  2. 十个隐藏_LOL手游:新版增加42个英雄,大白兔:10个隐藏T0角色
  3. 口袋操作系统_可以装进口袋的主机要有多小?驰为LarBox迷你主机入手体验
  4. 王建然之欲望和理想的对话
  5. hexo博客完整备份
  6. discuz修改用户uid_你知道Linux中的UID和GID的含义吗
  7. 删除 终端服务器,终端服务器命令更改 - Windows Server | Microsoft Docs
  8. 6 rethad 自定义硬盘_图文详解zabbix配置自定义监控项过程
  9. iOS项目之wifi局域网传输文件到iPhone的简单实现
  10. Java NIO 详解
  11. 小众软件android,应用专题 - 这些小众软件,满足你文艺不甘寂寞的心|微信安卓版7.0内测来啦 - Android 应用 - 生活 - 【最美应用】...
  12. 网络适配器不见了网络连接不见了的解决方法
  13. 深度解析javaScript常见数据类型检查校验
  14. 国潮风彩色手绘年俗年画春节插画素材
  15. 传奇登陆器 link.html 网页无法显示,打开登陆器后无法显示游戏各区列表的问题...
  16. storm源码分析研究(五)
  17. Android-服务Service(2)-bind绑定Service及两种生命周期
  18. 烽火2640路由器命令行手册-11-IP语音配置命令
  19. 13个小众有趣的网站,只有程序员才看得懂
  20. 添加到收藏夹和设置首页代码大全

热门文章

  1. WORD如何取消默认的分栏
  2. wordpress最佳架构_如何在2019年选择WordPress主题:最佳选择
  3. 我的梦想就是不工作,有什么错?
  4. JavaScript对象的键值对
  5. 如何在R中画出高效美观的相关性分析图
  6. android自定义滚动条(ScrollBar)样式
  7. conda创建虚拟环境失败
  8. 网络编程:使用tcp协议实现服务器与客户端交互
  9. vs 设置护眼背景颜色
  10. 为快捷方式文件(lnk文件)右键菜单添加“打开所在文件夹”