?php
創新互聯公司是一家專注網站建設、網絡營銷策劃、小程序開發、電子商務建設、網絡推廣、移動互聯開發、研究、服務為一體的技術型公司。公司成立十多年以來,已經為1000多家成都混凝土攪拌罐車各業的企業公司提供互聯網服務。現在,服務的1000多家客戶與我們一路同行,見證我們的成長;未來,我們一起分享成功的喜悅。
$a=[
["sbnumber"?=?"0513-0001-00001",?"name"?=?"心安苑"],
["sbnumber"?=?"0513-0001-00002",?"name"?=?"中正苑"],
["sbnumber"?=?"0513-0001-00003",?"name"?=?"務實苑"],
["sbnumber"?=?"0513-0001-00004",?"name"?=?"服務苑"],
["sbnumber"?=?"0513-0001-00005",?"name"?=?"張三"]
];
$b=[
["sbnumber"?=?"0513-0001-00001",?"name"?=?"心安苑"],
["sbnumber"?=?"0513-0001-00002",?"name"?=?"中正苑"],
["sbnumber"?=?"0513-0001-00003",?"name"?=?"務實苑"],
["sbnumber"?=?"0513-0001-00004",?"name"?=?"服務苑"],
["sbnumber"?=?"0513-0001-00007",?"name"?=?"李四"]
];
$cmp=function($av,?$bv){
$r=strcmp($av['sbnumber'],$bv['sbnumber']);
return?$r===0???strcmp($av['name'],$bv['name'])?:?$r;
};
$c=array_values(array_udiff($a,?$b,?$cmp));
$d=array_udiff($b,?$a,?$cmp);
foreach($d?as?$dv)?$c[]=$dv;
unset($d);
var_dump($c);
array(2)?{?
[0]=?array(2)?{?["sbnumber"]=?string(15)?"0513-0001-00005"?["name"]=?string(6)?"張三"?}
[1]=?array(2)?{?["sbnumber"]=?string(15)?"0513-0001-00007"?["name"]=?string(6)?"李四"?}?
}
需要比兩次才能互相比出差集,再合并結果。還有這里的記錄間根據各項內容(比如名字)來確定不同,所以用自定義的對內容的比較規則..
$arr1=array(array(1,2,3,4,5),array(6,7,8,9,10),array(11,12,13,14,15),array(16,17,18,19,20));
$arr2=array(array(1,2,3,4,5),array(11,12,13,14,15));
$arr3=array();
foreach ($arr1 as $key = $value) {
if(!in_array($value,$arr2)){
$arr3[]=$value;
}
}
var_dump($arr3);
php
array_udiff()
函數用于比較兩個(或更多個)數組的鍵名和鍵值,并返回差集。此比較是通過用戶提供的回調函數來進行的。如果認為第一個參數小于,等于,或大于第二個參數時必須分別返回一個小于零,等于零,或大于零的整數。本文章通過實例向大家講解array_udiff()函數的使用方法,
array_udiff_assoc
—
帶索引檢查計算數組的差集,用回調函數比較數據
基本語法:
array
array_udiff_assoc
(
array
$array1
,
array
$array2
[,
array
$
...
],
callable
$data_compare_func
)
此比較是通過用戶提供的回調函數來進行的。如果認為第一個參數小于,等于,或大于第二個參數時必須分別返回一個小于零,等于零,或大于零的整數。
Note:
注意本函數只檢查了多維數組中的一維。當然,可以用
array_udiff_assoc($array1[0],
$array2[0],
"some_comparison_func");
來檢查更深的維度。
參數介紹
參數
描述
array1
必需。第一個數組。
array2
必需。第二個數組。
myfunction
必需。字符串值,定義可調用的比較函數。
在第一個參數小于,等于或大于第二個參數時,該比較函數必須相應地返回一個小于,等于或大于
的整數。
返回值
array_udiff_assoc()
返回一個數組,該數組包括了所有在
array1
中但是不在任何其它參數數組中的值。注意和
array_diff()
與
array_udiff()
不同的是鍵名也用于比較。數組數據的比較是用用戶提供的回調函數進行的。在此方面和
array_diff_assoc()
的行為正好相反,后者是用內部函數進行比較的。
實例
?php
class
cr
{
private
$priv_member;
function
cr($val)
{
$this-priv_member
=
$val;
}
static
function
comp_func_cr($a,
$b)
{
if
($a-priv_member
===
$b-priv_member)
return
0;
return
($a-priv_member
$b-priv_member)
?
1
:
-1;
}
}
$a
=
array(
"0.1"
=
new
cr(9)
,
"0.5"
=
new
cr(12)
,
=
new
cr(23)
,
1
=
new
cr(4)
,
2
=
new
cr(-15)
,
);
$b
=
array(
"0.2"
=
new
cr(9)
,
"0.5"
=
new
cr(22)
,
=
new
cr(3)
,
1
=
new
cr(4)
,
2
=
new
cr(-15)
,
);
$result
=
array_udiff_assoc($a,
$b,
array(
"cr",
"comp_func_cr"
));
print_r($result);
?
運行結果:
Array
(
[0.1]
=
cr
Object
(
[priv_member:private]
=
9
)
[0.5]
=
cr
Object
(
[priv_member:private]
=
12
)
[0]
=
cr
Object
(
[priv_member:private]
=
23
)
)
上例中可以看到鍵值對
"1"
=
new
cr(4)
同時出現在兩個數組中因此不在本函數的輸出中。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞標題:php數據差集,php數組差集
轉載注明:http://vcdvsql.cn/article44/hshgee.html
成都網站建設公司_創新互聯,為您提供服務器托管、定制網站、網站內鏈、虛擬主機、靜態網站、網站設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯