文档章节

PHP array_diff() 函数的坑

zcqshine
 zcqshine
发布于 2016/07/14 11:03
字数 224
阅读 400
收藏 3

这次在项目中使用 array_diff 函数被坑了. 有如下两个二维数组:

$ary1 = array(
        array('uid'=>1,'name' => "zhangsan1"),
        array('uid'=>2,'name' => "zhangsan2"),
        array('uid'=>3,'name' => "zhangsan3"),
        array('uid'=>4,'name' => "zhangsan4"),
);

$ary2 = array(
        array('uid'=>3,'name' => "zhangsan2"),
        array('uid'=>4,'name' => "zhangsan3"),
);

求这两个数组的差集, 用 array_diff() 函数:

$ary3 = array_diff($ary1, $ary2);

var_dump($ary3);

输出结果为array(0) {}, 哈哈, 是不是很坑啊.

如果用在一维数组上, 也只比较了值, 并没有比较键, 也就是说只要值是一样的, 就会被剔除掉, 而不管键是否一样, 例如:

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"black","g"=>"purple");
$a3=array("a"=>"red","b"=>"black","j"=>"yellow");

$result=array_diff($a1,$a2,$a3);
print_r($result);

输出结果为:Array ( [b] => green [c] => blue )

如果要键也参与比较则需要使用 array_diff_assoc() 函数

© 著作权归作者所有

共有 人打赏支持
zcqshine
粉丝 6
博文 39
码字总数 12795
作品 0
深圳
高级程序员
加载中

评论(4)

zcqshine
zcqshine

引用来自“free_as_wind”的评论

Note: This function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using array_diff($array10, $array20);
嗯, 用的时候没注意.
zcqshine
zcqshine

引用来自“Geomen”的评论

手册上有注释的,这个方法只比较多维数组的一维的哦!
Note:
注意本函数只检查了多维数组中的一维。当然可以用 array_diff($array10, $array20); 检查更深的维度。
嗯, 是的, 我也是后来查手册的时候看到的. 用的时候没注意,
free_as_wind
free_as_wind
Note: This function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using array_diff($array10, $array20);
Geomen
Geomen
手册上有注释的,这个方法只比较多维数组的一维的哦!
Note:
注意本函数只检查了多维数组中的一维。当然可以用 array_diff($array10, $array20); 检查更深的维度。
php数组遍历的差异(array_diff)实现

初次接到这个题目,我发现这非常的简单,于是按照以往的经验“随便”写了一个: function arraydiff($array1, $array2) { $diff = array(); foreach ($array1 as $k => $v1) { $flag = false...

安安-Anan
2015/08/12
0
0
php中的数组函数学习记录1

1、返回字符串键名全为小写或大写的数组。arraychangekeycase 用法:arraychangekeycase($input (array),CASEUPPER|CASELOWER),其中CASELOWER是返回小写(默认),CASEUPPER返回大写 例子: ...

mrmusic
2016/03/19
45
0
你可能不知道的一些PHP函数的特性

这篇文章介绍的这些函数你可能都知道,也都用过,但是有一些细小的点你可能没有注意,而且开发中也会用到这些点,当你用到的时候,能想到这些PHP函数的特性,那么你不仅开发效率高,而且代码...

BearCatYN
2015/09/16
77
0
php 操作数组 (合并,拆分,追加,查找,删除等)

合并数组 array_merge()函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加。其形式为: array array_merge (array array...

王锐
2012/08/17
0
1
php 操作数组 (合并,拆分,追加,查找,删除等)

合并数组 array_merge()函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加。其形式为: Php代码 收藏代码 array array_...

mdoo
2016/09/04
20
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

002,zabbix-agent的安装 监控Linux主机

2.1.安装zabbix-agent $ rpm -i http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm$ yum install -y zabbix-agent zabbix-get 2.2.配置zabbix-agent ......

happyeveryday32
31分钟前
2
0
docker learn :swarm

swarm是什么 swarm是一组运行docker服务的集群,之后,还是使用那些命令去操作docker,但是是通过swarm manager来执行的。 swarm中的机器可以是实体的也可以是虚拟的,加入swarm后,他们被当作...

writeademo
31分钟前
1
0
Golang + vscode 开发环境配置

GOPATH 环境变量的配置 https://my.oschina.net/xinxingegeya/blog/718305 安装vscode go 扩展 下载vscode ,安装go的扩展https://github.com/Microsoft/vscode-go 该扩展对 Golang 支持非常......

秋风醉了
33分钟前
0
0
idea jar包

我自己用idea新建一个springboot项目,打包一直有问题,百度了下,又总结了下。 方式一: 找到Project Structure菜单,然后点开,照下图点击 然后出现下图所示 红框1:为你项目的main函数所在...

朝如青丝暮成雪
35分钟前
0
0
Vue scoped CSS 与深度作用选择器 /deep/

使用 scoped 后,父组件的样式将不会渗透到子组件中。 例如(无效): <template> <div id="app"> <el-input class="text-box" v-model="text"></el-input> </div></template><......

不负好时光
35分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部