在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)); |
http://www.bkjia.com/PHPjc/633094.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/633094.htmlTechArticle在php中如果我想要對兩個數組進行如並集、交集和差集操作,我們可直接使用php內建的函數來操作如array_merge(),array_intersect(),array_diff(). //計...