2016-10-20 10:36:33 4169次浏览 3条回答 0 悬赏 100 金钱

我现在做修改文章操作,用到 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 条回复
    回复于 2016-10-20 18:12 回复

    但是键为 c_isrecommend 的值是不一样的啊,array_diff() 对比的不应该是相同的键的值是不是一样的么?难道只是对比所有的值有没有不一样的?

    回复于 2016-10-21 09:07 回复

    array_diff 只对值进行比较 返回的数组key不会变 array_diff_assoc是键名进行比较

    回复于 2016-10-21 09:49 回复

    恩 知道了 多谢讲解

    觉得很赞
您需要登录后才可以回答。登录 | 立即注册
lzrqyc110
总监

lzrqyc110

注册时间:2016-01-02
最后登录:2018-12-28
在线时长:29小时34分
  • 粉丝37
  • 金钱4195
  • 威望40
  • 积分4885

热门问题