1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/**
 * 以第一個引數為主進行進行比較
 * **/
function diffArray($arr1 $arr2 ){
    $arrRet array();
    #針對關聯陣列
    if(is_assoc($arr1) && is_assoc($arr2) ){
        if (empty($arr1)) {
            $arr1 array();
        }
        if (empty($arr2)) {
            $arr2 array();
        }
         
        foreach ($arr1 as $key => $value){
            if(!in_array($keyarray_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,diffArray($value,$arr2[$key]));
            }
        }
    }elseif(is_assoc($arr1)===false && is_assoc($arr2)===false) {#針對索引陣列
        $arrRet array_merge(array_diff($arr1$arr2),array_diff($arr2$arr1));
    }else {
        new Exception("陣列型別不一致!");
    }
    return $arrRet;
}
/**
 * 判斷是否為關聯陣列
 * **/
function is_assoc($arr) {  
    if(!is_array($arr)) return -1;
    return !(array_values($arr) === $arr);
}  
$arr1 array(
    //"channelNameShort"=> "百度時代公司",
    //"channelName"=>"百度時代責任有限公司",
    "rawUrl"=>"http://www.baidu.com",
    "logoUrl"=> "http://t11.baidu.com/it/u=3114404026,3614407463&fm=58",
    "channelType"=> array(
        "210010004",
        "210010007",
    ),
    "mobileURL" => "http://www.bb.com",
    "rockArray" => array(
        "A" => 1,
        "B" => array(1,2,3),
    ),
    //"null" => array(),
 
);
$arr2 array(
    //"channelNameShort"=> "百度時代公司",
    //"channelName"=>"百度線上公司",
    "rawUrl"=>"http://www.baidu.com",
    "logoUrl"=> "http://t11.baidu.com/it/u=3114404026,3614407463&fm=58",
    "mobileURL" => "",
    "rockArray" => array(
        "A" => 1,
        "B" => 2,
    ),
    "channelType"=> array(
        "210010004",
        "210010017",
    ),
    "null" => array(),
);
 
/*$arr3 = array(
    1,2,3,4
);
var_dump(is_assoc($arr1))*/
 
/*$arr1 = array(1,3,5,7,9);
$arr2 = array(1,2,5,6,9);*/
 
var_dump(diffArray($arr1$arr2));
var_dump(array_unique(array_merge(diffArray($arr1$arr2),diffArray($arr2$arr1))));