php 对比两个数组中的值是否相等

$a = ['1','2','4','3'];//提交答案
$b = ['2','1','3'];//正确答案
$state = $this->diffArray($b, $a);
echo '<pre>';
print_r($state);die;
    /**
     * 以第一个参数为主进行进行比较
     * **/
    public  function diffArray($arr1 , $arr2 ){
        $arrRet = array();
        #针对关联数组
        if($this->is_assoc($arr1) && $this->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,$this->diffArray($value,$arr2[$key]));
                }
            }
        }elseif($this->is_assoc($arr1)===false && $this->is_assoc($arr2)===false) {#针对索引数组
            $arrRet = array_merge(array_diff($arr1, $arr2),array_diff($arr2, $arr1));
        }else {
            new Exception("数组类型不一致!");
        }
        return $arrRet;
    }

    /**
     * 判断是否为关联数组
     * **/
    private  function is_assoc($arr) {
        if(!is_array($arr)) return -1;
        return !(array_values($arr) === $arr);
    }
Array
(
    [0] => 4
)
posted @ 2018-11-24 17:20  ノGHJ  阅读(4411)  评论(1编辑  收藏  举报