1. 程式人生 > >php 對比兩個陣列中的值是否相等

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
)