程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php中數組的並集、交集和差集函數介紹

php中數組的並集、交集和差集函數介紹

編輯:關於PHP編程

在php中如果我想要對兩個數組進行如並集、交集和差集操作,我們可直接使用php自帶的函數來操作如array_merge(),array_intersect(),array_diff().

//計算數組的合並 array_merge與“+”的區別
array_merge() 函數把兩個或多個數組合並為一個數組。

如果鍵名有重復,該鍵的鍵值為最後一個鍵名對應的值(後面的覆蓋前面的)。如果數組是數字索引的,則鍵名會以連續方式重新索引。

注釋:如果僅僅向 array_merge() 函數輸入了一個數組,且鍵名是整數,則該函數將返回帶有整數鍵名的新數組,其鍵名以 0 開始進行重新索引。(參見例子 2)

 代碼如下 復制代碼

$a = array(1 => 'a', 'b', 'c');
$b = array(1 => 'aa', 2, 'c');
$union = array_merge($a, $b);
$plus = $a + $b;
print_r($union);
print_r($plus);
結果依次為:
Array
{
[0]=> a
[1]=> b
[2]=> c
[3]=> aa
[4]=> 2
[5]=> c
}
Array
(
[1] => a
[2] => b
[3] => c
)

要合並的兩個數組中有相同的字符串鍵的時候,使用array_merge()會覆蓋掉原來的值,
而使用“+”合並數組則會和用“+”號合並數組相同數字鍵一樣把最先出現的值作為最終結果返回,如下例:

 代碼如下 復制代碼

$a2 = array('str' => 'a', 'b', 'c');
$b2 = array('str' => 'aa', 2, 'c');
$union2 = array_merge($a2, $b2);
$plus2 = $a2 + $b2;
print_r($union2);
print_r($plus2);

結果依次為:

Array
(
[str] => aa
[0] => b
[1] => c
[2] => 2
[3] => c
)
Array
(
[str] => a
[0] => b
[1] => c
)

注:如果想用array_merge合並兩個數組,返回結果可能還會有相同的元素,這時候可以用array_unique()把相同的元素去掉

//計算數組的交集

array_intersect() 函數返回兩個或多個數組的交集數組。

結果數組包含了所有在被比較數組中,也同時出現在所有其他參數數組中的值,鍵名保留不變。

注釋:僅有值用於比較。

 代碼如下 復制代碼 $a = array('jpg','png','gif','bmp');
$b = array('JPG','txt','docx','bmp');
$intersection = array_intersect($a, $b);

 
還可以通過函數,獲取自己想要的(比如元素不區分大小寫)

 代碼如下 復制代碼

$intersection2 = array_intersect(array_map('strtolower',$a), array_map('strtolower',$b));
print_r($intersection);
print_r($intersection2);

結果依次為:

 

 代碼如下 復制代碼 Array
(
[3] => bmp
)
Array (
[0] => jpg
[3] => bmp
)

 
//計算數組的差集

 代碼如下 復制代碼

$old = array('jpg','png','gif','bmp');
$new = array('JPG','txt','docx','bmp');
$difference = array_diff($old, $new);

注:返回結果的元素包含$old的元素,不包括$new的元素
print_r($difference);
結果為:

 代碼如下 復制代碼 Array
(
[0] => jpg
[1] => png
[2] => gif
)

也可以用函數先進行處理,再計算差集

array_diff() 函數返回兩個數組的差集數組。該數組包括了所有在被比較的數組中,但是不在任何其他參數數組中的鍵值。

在返回的數組中,鍵名保持不變。

語法
array_diff(array1,array2,array3...)

 代碼如下 復制代碼

$difference = array_diff(array_map('strtolower',$old), array_map('strtolower',$new));

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved