php 對比兩個陣列中的值是否相等
阿新 • • 發佈:2018-11-24
$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 )