PHP瓜分两个数组的相同元素和不同元素的两种方法

一、举例说明

  例如有两个数组A和B(当然这个A和B也可以是key=>value形式)

  A = array('tt','cc','dd','mm')

  B = array('ad','tt','cc','qq')

  希望得到的结果是:

  sameArr = array('tt','cc')

  A = array('dd','mm')

  B = array('ad','qq')

二、解决方案

2.1、方法一:for循环取出数据

  1、for循环一个A数组;

  2、使用array_search判断元素是否存在B数组中;

  3、存在后unset A和B中的该元素;

  4、将该相同元素添加到sameArr数组中

  具体代码:

  

 

< php 
   $A = array('tt','cc','dd','mm');
  $B = array('ad','tt','cc','qq');
  $sameArr = array();
   for($i=0; $i<count($A); $i++){
      $pos = array_search($A[$i], $B);
       if($pos>0){
           $sameArr[] = $A[$i];
           unset($A[$i]);
          unset($B[$pos]);
        }      
     }
     var_dump($sameArr, $A, $B);

 key value数组形式和此类似,只需要将for循环替换为foreach循环即可,下面看一下运行结果: 

  返回结果是我们预期的结果。

2.2、方案二:利用PHP内置函数array_diff和array_intersect

  同样也可以使用array_diff分割,获取在A中而不在B中的元素或者在B中而不在A中的元素,但是无法获取相同元素,要获取相同元素的话,需要使用。array_intersect函数来获取,方法如下:

< php  
   $sameArr = array_intersect($A, $B);
  $diffA = array_diff($A, $B);
  $diffB = array_diff($B, $A);
  var_dump($sameArr, $diffA, $diffB);

  返回结果是: 

 也是正确的,预期结果。



转载于:https://my.oschina.net/meng527/blog/539191

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值