PHP比较2个数组是否一致的方法
- 11271
- PHP
- 0
- super_dodo
- 2013/09/22
实际的项目开发中,会存在要去数据中心获取数据,并保存在本项目的数据库中。这样就带来了一个很繁琐的问题,保持数据同步的问题。数据同步有多种方法比如登陆进行同步,刷新页面进行通过,手动同步,但是皆有缺陷和硬伤(此处不再分析同步)。
此处项目中需要手动去同步数据中心的数据,这样当用户点击按钮的时候去同步数据。同一条数据又有很多字段。同步的时候就需要去对比本地的数据是否和远程一致,不一致的情况下再对本地表进行UPDATE.下面就引入正题,对两个数组的比较。
//方法1:直接进行比较 $a = array(1,3,5,7); $b = array(1,3,5); $c = array(5,7,1,3); if($a == $b){ echo '匹配!!!<hr>'; } //($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 '匹配!!!<hr>'; } //($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 '<hr>'; $rt = array_diff($bbb, $aaa); print_r($rt); //Array () ---特别需要注意(两个数组连个数都不一样,但是diff之后为空) echo '<hr>'; $rt = array_diff($aaa, $ccc); print_r($rt); //Array () ---顺序不影响结果(不需要进行排序) echo '<hr>'; $rt = array_diff($aaa, $ddd); print_r($rt); //Array () ---比较的只是value值,key值未对应比较 echo '<hr>'; //所以不建议用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 '<hr>'; $c2 = array_diff($b, $a); print_r($c2); //输出array( [1] => ddd1 [3] => bbb) echo '<hr>';
相关阅读
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
热门文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
最新文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例