php 求二维数组的差集|比较二维数组的不同 array_diff

本文介绍PHP中array_diff函数的局限性及其在多维数组上的应用限制,并提供了一个自定义函数array_diff_assoc2_deep,该函数能够实现对多维数组进行深度比较并返回差集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

array_diff只针对一维数组有效,对二维数组无效(求出为空或array(0))。
手册写明是:Note: This function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using array_diff($array1[0], $array2[0]);
<?php 

// ARRAY 1 

$a1 = array( 
"a1" => 1, 
"a3" => array( 
"a31" => 31 
), 
"a4" => array( 
"a41" => 41 
), 
"a5" => 5 
); 

// ARRAY 2 
$a2 = array( 
"a1" => 1, 
"a2" => 2, 
"a3" => array( 
"a31" => 31, 
"a32" => array( 
"a321" => 321, 
"a322" => 322 

), 
"a4" => array( 
"a41" => 42 
), 
"a5" => array( 
"a51" => 51, 
"a52" => 52 

); 

function array_diff_assoc2_deep($array1, $array2) {
            $ret = array();
            foreach ($array1 as $k => $v) {    
            if (!isset($array2[$k])) $ret[$k] = $v;
            else if (is_array($v) && is_array($array2[$k])) $ret[$k] = array_diff_assoc2_deep($v, $array2[$k]);
            else if ($v !=$array2[$k]) $ret[$k] = $v;
            else
            {
                unset($array1[$k]);
            }
           
            }
            return $ret;
}


//被 doudoukiki修改过的,效率提高了很多

print_r(array_diff_assoc2_deep($a1, $a2)); 

?> 

转载于:https://www.cnblogs.com/7bus/archive/2010/11/25/1888222.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值