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数组中
具体代码:
  1.  
  2. <?php
  3. $A  =  array ( 'tt' , 'cc' , 'dd' , 'mm' ) ;
  4. $B  =  array ( 'ad' , 'tt' , 'cc' , 'qq' ) ;
  5. $sameArr  =  array ( ) ;
  6. for ( $i = 0 ;  $i < count ( $A ) ;  $i ++ ) {
  7.          $pos  =  array_search ( $A [ $i ] ,  $B ) ;
  8.          if ( $pos > 0 ) {
  9.                          $sameArr [ ]  =  $A [ $i ] ;
  10.                  unset ( $A [ $i ] ) ;
  11.                  unset ( $B [ $pos ] ) ;
  12.          }      
  13. }
  14. var_dump ( $sameArr ,  $A ,  $B ) ;

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

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

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

同样也可以使用 array_diff分割,获取在A中而不在B中的元素或者在B中而不在A中的元素,但是无法获取相同元素,要获取相同元素的话,需要使用。 array_intersect函数来获取,方法如下:
  1. <?php
  2. $sameArr  =  array_intersect ( $A ,  $B ) ;
  3. $diffA  =  array_diff ( $A ,  $B ) ;
  4. $diffB  =  array_diff ( $B ,  $A ) ;
  5. var_dump ( $sameArr ,  $diffA
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

danhuang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值