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
)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM