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 ))));
|
PHP對比兩個資料中不同的元素
版權宣告:原創作品,如需轉載,請註明出處。否則將追究法律責任
本文轉自 夢朝思夕 51CTO部落格,原文連結:http://blog.51cto.com/qiangmzsx/1553325
相關文章
- 如何比較兩個資料庫表結構的不同資料庫
- Python實現對比兩個Excel資料內容並標出不同PythonExcel
- 上海科技創新資源資料中心:中美兩院院士對比
- 比對兩個資料庫的差異:Java篇資料庫Java
- 比較兩個陣列中是否有相同的元素陣列
- python 兩個資料夾裡的檔名對比Python
- 比較兩個檔案,求出不同的內容,A-B
- 將不同高度的元素對齊
- iOS 用簡便的方法統計兩個陣列中不同的元素iOS陣列
- 兩個coca略有不同詞頻檔案 比較
- java stream()流對兩個集合進行比對Java
- 比較兩個物件是否相同,輸出不同的屬性值(一)物件
- 不同的連線方式效能對比!
- Vue與React兩個框架的粗略區別對比VueReact框架
- mysql 對比兩個表的一致性MySql
- PHP 計算兩個檔案的相對路徑PHP
- 透過反射對比兩個物件是否相等反射物件
- 比較兩個資料庫的差異資料庫
- 比較兩個表的資料差別
- PHP 5 與 PHP 7 的效能對比PHP
- 如何在億級資料中判斷一個元素是否存在?
- 如何判斷一個元素在億級資料中是否存在?
- Redis 不同插入方法的效能對比Redis
- 不同平臺上mysql的對比(轉)MySql
- WPF 元素相對另外一個元素的 相對位置
- IDEA如何對比不同分支某個檔案的差異Idea
- Shell 命令求兩個檔案每行對比的相同內容
- Linux 對比兩個文字的交集和差集(comm)Linux
- 資料中心代理有哪些不同型別?型別
- elementui表單驗證 對比兩個表單大小UI
- 找到兩個陣列中的公共元素陣列
- 直觀對比幾個不同 Python 程式碼片段的執行速度Python
- 用VBS比較兩個Excel檔案的資料Excel
- 兩組資料量相對大時,如何高效進行比對
- Trademob:iOS和Android兩個移動平臺資料對比iOSAndroid
- CSS“隱藏”元素的幾種方法的對比CSS
- 不同渠道零售企業對比–資料資訊圖
- 如何從10億資料中快速判斷是否存在某一個元素