/**
 * @param $arr1  提交的参数
 * @param $arr2  查到的参数
 * @return array 返回值
 * @description  查看数组值的区别
 */
function diffArray($arr1 , $arr2 ){
    $arrRet = array();
    #针对关联数组
    if(is_assoc($arr1) && is_assoc($arr2) ){
        if (empty($arr1)) {
            $arr1 = array();
        }
        if (empty($arr2)) {
            $arr2 = array();
        }
        foreach ($arr1 as $key => $value){
            if(!in_array($key, array_keys($arr2))){
                if(!array_key_exists($key, $arrRet)){
                    array_push($arrRet, $key);
                }
                continue;
            }
            if($arr1[$key] !== $arr2[$key]){
                if(!array_key_exists($key, $arrRet)){
                    array_push($arrRet, $key);
                }
            }
            #针对元素为数组的情况
            if(is_array($value)){
                array_merge($arrRet,diffArray($value,$arr2[$key]));
            }
        }
    }elseif(is_assoc($arr1)===false && is_assoc($arr2)===false) {#针对索引数组
        $arrRet = array_merge(array_diff($arr1, $arr2),array_diff($arr2, $arr1));
    }else {
        new Exception("数组类型不一致!");
    }
    return $arrRet;
}
/**
 * @param $arr
 * @return bool|int
 * 判断是否是索引数组
 */
function is_assoc($arr) {
    if(!is_array($arr)) return -1;
    return !(array_values($arr) === $arr);
}
最后修改:2020 年 12 月 10 日 08 : 29 PM
对您有帮助的话,请赏包辣条吧 ^~^