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(
$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
,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
))));
|
版权声明:原创作品,如需转载,请注明出处。否则将追究法律责任
本文转自 梦朝思夕 51CTO博客,原文链接:http://blog.51cto.com/qiangmzsx/1553325