php 判断两个数组对象是否相等_PHP比较2个数组是否一致的方法

实际的项目开发中,会存在要去数据中心获取数据,并保存在本项目的数据库中。这样就带来了一个很繁琐的问题,保持数据同步的问题。数据同步有多种方法比如登陆进行同步,刷新页面进行通过,手动同步,但是皆有缺陷和硬伤(此处不再分析同步)。

此处项目中需要手动去同步数据中心的数据,这样当用户点击按钮的时候去同步数据。同一条数据又有很多字段。同步的时候就需要去对比本地的数据是否和远程一致,不一致的情况下再对本地表进行UPDATE.下面就引入正题,对两个数组的比较。

//方法1:直接进行比较

$a = array(1,3,5,7);

$b = array(1,3,5);

$c = array(5,7,1,3);

if($a == $b){ echo '匹配!!!


'; }

//($a == $b) =>不匹配???数组的长度都不一致

//($a == $c) =>匹配!!!顺序如何不影响数组的比较结果

//方法2:带Key值的数组进行比较

$aa = array('ip'=>1,'num'=>5,'id'=>3);

$bb = array('ip'=>1,'id'=>3,'num'=>5,'idd'=>3);

$cc = array('ip'=>1,'num'=>5,'idd'=>3,'id'=>3);

if($aa == $bb){ echo '匹配!!!


'; }

//($aa == $bb) =>不匹配???数组的长度都不一致

//($aa == $cc) =>匹配!!!顺序如何不影响数组的比较结果(不需要ksort排序)key和value都会对应比较

//方法3:数组排序后在比较使用 array_diff()

$aaa = array('a'=>1,'b'=>3,'c'=>5,'d'=>7);

$bbb = array('a'=>1,'c'=>3,'b'=>5);

$ccc = array('a'=>1,'c'=>5,'d'=>7,'b'=>3);

$ddd = array('a'=>1,'c'=>5,'d'=>7,'e'=>3);

$rt = array_diff($aaa, $bbb);

print_r($rt);//Array ( [d] => 7 )

echo '


';

$rt = array_diff($bbb, $aaa);

print_r($rt);//Array ()---特别需要注意(两个数组连个数都不一样,但是diff之后为空)

echo '


';

$rt = array_diff($aaa, $ccc);

print_r($rt);//Array () ---顺序不影响结果(不需要进行排序)

echo '


';

$rt = array_diff($aaa, $ddd);

print_r($rt);//Array () ---比较的只是value值,key值未对应比较

echo '


';

//所以不建议用array_diff()的返回值来作为两个数组是否相等的参考。

//要 array_diff($a, $b) == array_diff($b, $a) == array() 才是两个数组相等

//如果是两个数组array(1,4,3)与array(1,3),这两个数组连个数都不一样,但是diff之后为空,你能说他们相同么,所以,判断之前要先判断拥有的个数,不相同的话就直接为不相同!

//array_diff的长处是用来查找第一个数组有的值在第二个数组里面是否存在,不存在则显示出来in_array功能的扩展(但是效率不高)

$a = array('aaa1','bbb2','ddd','aaa');

$b = array('aaa','ddd1','aaa','bbb','bbb2');

$c1 = array_diff($a, $b);

print_r($c1);//输出array( [0] => aaa1 [2] => ddd )

echo '


';

$c2 = array_diff($b, $a);

print_r($c2);//输出array( [1] => ddd1 [3] => bbb)

echo '


';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值