php 函数 array_diff() 为什么对比的结果不对? [ 2.0 版本 ]
我现在做修改文章操作,用到 array_diff()
函数,对比提交的新数据和数据库里面的旧数据不一样的地方,结果有一个字段不一样却没对比出来,望求解,比如以下两个数组
$new=["abc"=>"abc","c_isrecommend"=>"1", "c_singer"=>"1"];
$old=["abc"=>"abc","c_isrecommend"=>"0", "c_singer"=>"1"];
print_r(array_diff($new,$old));
有差别,但对比的结果是空数组
Array ( )
不知道怎么回事,有知道为什么这样的大神么?求解啊,如果这个函数不准确,有没有别的方法能对比两个数组的差别并筛选出来的方法呢?望解答
最佳答案
-
18706126747 发布于 2016-10-20 16:09 举报
array_diff 是返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。
你$new的c_isrecommend=>1 的值在$old的已经存在了 和$old的c_singer=>1相等
你把$new改成 $new = array('abc'=>'abc','c_isrecommend'=>'2','c_singer'=>'1');就行了
共 3 条回复18706126747 回复于 2016-10-21 09:07 回复array_diff 只对值进行比较 返回的数组key不会变 array_diff_assoc是键名进行比较
@18706126747 恩 知道了 多谢讲解
yizhicainiao 觉得很赞
其他 2 个回答
lzrqyc110
注册时间:2016-01-02
最后登录:2018-12-28
在线时长:29小时34分
最后登录:2018-12-28
在线时长:29小时34分
- 粉丝37
- 金钱4195
- 威望40
- 积分4885