1. 程式人生 > >PHP陣列的幾個操作,求並集,交集,差集,陣列與字串的相互轉換及陣列去重

PHP陣列的幾個操作,求並集,交集,差集,陣列與字串的相互轉換及陣列去重

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

計算陣列的合併 array_merge與“+”的區別

array_merge() 函式把兩個或多個數組合併為一個數組。

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

註釋:如果僅僅向 array_merge() 函式輸入了一個數組,且鍵名是整數,則該函式將返回帶有整數鍵名的新陣列,其鍵名以 0 開始進行重新索引.程式碼如下:

  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. //結果依次為:
  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 

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

  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. //結果依次為:
  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合併兩個陣列,返回結果可能還會有相同的元素,這時候可以用array_unique()把相同的元素去掉

計算陣列的交集

array_intersect() 函式返回兩個或多個數組的交集陣列,結果陣列包含了所有在被比較陣列中,也同時出現在所有其他引數陣列中的值,鍵名保留不變,註釋:僅有值用於比較,程式碼如下:

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

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

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

計算陣列的差集,程式碼如下:

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

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

print_r($difference);

結果為:

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

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

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

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

程式碼如下:

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

陣列轉換為字串:

<?php
$arr = array('Hello','World!','I','love','Shanghai!');
echo implode(" ",$arr);
?>

字串轉換為陣列:

<?php
$str="1432532 ,4444";

 $arr = explode(",",$str);
 echo count($arr)."</br>";
 
print_r($arr);
?>

陣列元素值去重

<?php
$a=array("a"=>"red","b"=>"green","c"=>"red");
print_r(array_unique($a));
?>

針對有空格的字串轉換成無空格的字串

<?php
$str="1432532 ,67878";

 $arr = explode(",",$str);
 //echo count($arr)."</br>";
 
 $str_u='';
 
for($i=0;$i<count($arr);$i++)
{
    
    $str_u .=trim($arr[$i]).',';
    
    }
 echo $str_u;

?>

相關推薦

PHP陣列操作交集陣列字串相互轉換陣列

在php中如果我想要對兩個陣列進行如並集、交集和差集操作,我們可直接使用php自帶的函式來操作如array_merge(),array_intersect(),array_diff(). 計算陣列的合併 array_merge與“+”的區別 array_merge() 函式

php陣列交集函式

計算陣列的並集 array_merge ( array array1[,arrayarray1[,array… ] )  將一個或多個數組的單元合併起來,一個數組中的值附加在前一個數組的後面。返回作為結果的陣列。 計算陣列的交集 array_intersect ( a

陣列交集

const arr1 = [1,2,3];const arr2 = [3,4,5];// 並集const union = Array.from(new Set([...arr1,...arr2])); 

List的 交集操作

bject list imp st2 for add str class lis package com.zheting.collection.list; import java.util.ArrayList; import java.util.Arrays; impo

第二十二章 Linux文件比較文本文件的交集:comm命令

調整 得到 指定 顯示 兩個文件 not in 通過 需要 選項 第二十二章 Linux文件比較,文本文件的交集、差集與求差:comm命令 名詞解釋 comm 命令 可以用於兩個文件之間的比較,它有一些選項可以用來調整輸出,以便執行交集、求差、差集操作。 交集:打印兩個文件

ES6陣列實現交集

let set1 = new Set(['a','b','c','d','e','f']); let set2 = new Set(['d','e','f','g','h','i']); //並集 let union = [...new Set([...set1,...set2])]; /

集合類(交集操作

昨日,朋友拿來一份有些問題的原始碼,是一個集合類和幾個集合操作函式(並集、交集、差集),幫忙改了一下,剛轉C++不到半個月,因為只是為了演算法競賽而學C++,所以只好好學了C++偏向演算法層的知識,類只是過了一遍,沒有自己嘗試寫過,剛好拿來練練手,於是大刀闊斧的

陣列交集

package xuxin; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java

java字元陣列字串相互轉換

1.字串轉化為字元陣列 public class Hello { public static void main(String args[]){ Scanner input = new Scanner(System.in); String str="abc";

Python listunion, 交集intersection, difference

轉載自翔雲並感謝Share python的集合set和其他語言類似,是一個無序不重複元素集, 可用於消除重複元素。 支援union(聯合), intersection(交), difference(差)和sysmmetric difference(對稱差集)等數學運算。 不支援 inde

ES6 運算元組的交集

使用ES6 運算元組 let a = new Set([1, 2, 3]); let b = new Set([3, 5, 2]); // 並集 let unionSet = new Set(

STL集合的交集、對稱

STL一共提供了四種set相關的演算法,分別是並集(union),交集(intersection),差集(difference),和對稱差集(symmetric difference)。 STL的這四個演算法所接受的set必須是有序區間,元素可以重複出現。即他們只能接受se

MySQL 交集

建立兩個表 CREATE TABLE `object_a` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `oname` varchar(50) DE

陣列操作filtermapincludesfindsomeeveryreduce

let arr=[1,2,3,4,5,55]; filter(篩選) let newArr=arr.filter(function (i) { return i>2&&i<5; }); 返回新陣列,不會改變原陣列。

利用sort和uniq文件的交集

sort uniq  利用sort和uniq求兩個文件的並集,交集和差集  並集:cat file1.txt file2.txt | sort | uniq > file.txt  交集:cat file1.txt file2.txt | sort | uniq -d >file.txt 

存物件的List

比較物件的某幾個欄位,相等則表示物件相等,求並集: 將物件的那幾個欄位拼成一個String存於map中作為key, 物件作為value,程式碼如下: /******物件定義********/ Class Obj{ int attr1; String attr2; St

JS陣列交集

es7: filter結合includes // 並集 let union = a.concat(b.filter(v => !a.includes(v))) // [1,2,3,4,5] // 交集 let intersectio

Android Bitmap 常見的操作:縮放裁剪旋轉偏移

/** * 根據給定的寬和高進行拉伸 * * @param origin 原圖 * @param newWidth 新圖的寬 * @param newHeight 新圖的高 * @return new Bitmap */ p

編寫一個程序出200到300之間的數且滿足條件:它們三數字之積為42數字之和為12

clas system print gpo 變量 輸出 滿足 定義 post //定義變量ge、shi、bai,用於存放個位、十位、百位上的數字 int number=0; //使用for循環 for(nu

A. httpd常見的操作

windows服務 文件 文件的 停止 win tor 運行 install -h 可以在cmd 窗口中輸入 httpd -help 查看httpd 的詳細用法常用的有以下幾個:①httpd -k install將Apache安裝為Windows NT服務,被安裝的服務名