$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
)