国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php中數(shù)組的并集、交集和差集函數(shù)介紹

2024-09-04 11:45:54
字體:
供稿:網(wǎng)友

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

計(jì)算數(shù)組的合并 array_merge與“+”的區(qū)別

2017年可用的翻墻軟件,解決Youtube、Facebook、Twitter等上不了的問題

array_merge() 函數(shù)把兩個或多個數(shù)組合并為一個數(shù)組。

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

注釋:如果僅僅向 array_merge() 函數(shù)輸入了一個數(shù)組,且鍵名是整數(shù),則該函數(shù)將返回帶有整數(shù)鍵名的新數(shù)組,其鍵名以 0 開始進(jìn)行重新索引.代碼如下:

  1. $a = array(1 => 'a''b''c'); 
  2. $b = array(1 => 'aa', 2, 'c'); 
  3. $union = array_merge($a$b); 
  4. $plus = $a + $b
  5. print_r($union); 
  6. print_r($plus); 
  7. //結(jié)果依次為: 
  8. Array 
  9. [0]=> a 
  10. [1]=> b 
  11. [2]=> c 
  12. [3]=> aa 
  13. [4]=> 2 
  14. [5]=> c 
  15. Array 
  16. [1] => a 
  17. [2] => b 
  18. [3] => c 

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

  1. $a2 = array('str' => 'a''b''c'); 
  2. $b2 = array('str' => 'aa', 2, 'c'); 
  3. $union2 = array_merge($a2$b2); 
  4. $plus2 = $a2 + $b2
  5. print_r($union2); 
  6. print_r($plus2); 
  7. //結(jié)果依次為: 
  8. Array 
  9. [str] => aa 
  10. [0] => b 
  11. [1] => c 
  12. [2] => 2 
  13. [3] => c 
  14. Array 
  15. [str] => a 
  16. [0] => b 
  17. [1] => c 

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

計(jì)算數(shù)組的交集

array_intersect() 函數(shù)返回兩個或多個數(shù)組的交集數(shù)組,結(jié)果數(shù)組包含了所有在被比較數(shù)組中,也同時出現(xiàn)在所有其他參數(shù)數(shù)組中的值,鍵名保留不變,注釋:僅有值用于比較,代碼如下:

  1. $a = array('jpg','png','gif','bmp'); 
  2. $b = array('JPG','txt','docx','bmp'); 
  3. $intersection = array_intersect($a$b); 

還可以通過函數(shù),獲取自己想要的(比如元素不區(qū)分大小寫),代碼如下:

  1. $intersection2 = array_intersect(array_map('strtolower',$a), array_map('strtolower',$b)); 
  2. print_r($intersection); 
  3. print_r($intersection2); 
  4. //結(jié)果依次為: 
  5. Array 
  6. [3] => bmp 
  7. Array ( 
  8. [0] => jpg 
  9. [3] => bmp 

計(jì)算數(shù)組的差集,代碼如下:

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

注:返回結(jié)果的元素包含$old的元素,不包括$new的元素

print_r($difference);

結(jié)果為:

  1. Array 
  2. [0] => jpg 
  3. [1] => png 
  4. [2] => gif 

也可以用函數(shù)先進(jìn)行處理,再計(jì)算差集

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

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

代碼如下:

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 永年县| 资源县| 沁水县| 逊克县| 永修县| 甘肃省| 吴川市| 连平县| 大同市| 定襄县| 和林格尔县| 德令哈市| 神农架林区| 西和县| 防城港市| 台中县| 米易县| 从化市| 宁城县| 宁南县| 五大连池市| 怀安县| 肥城市| 柘城县| 通渭县| 左云县| 黔东| 洞头县| 延吉市| 巩义市| 横峰县| 武宁县| 津南区| 白水县| 桂东县| 广西| 武邑县| 黄山市| 济宁市| 卓资县| 定州市|