搜尋
首頁後端開發php教程php 操作陣列(合併,拆分,追加,查找,刪除等)

1. 合併陣列 
array_merge()函數將陣列合併到一起,傳回一個聯合的陣列。所得的數組以第一個輸入數組參數開始,並依後面數組參數出現的順序依序迫加。其形式為: 
複製程式碼 程式碼如下: 
array array_merge (array array1 array2…,arrayN) 

這個函數將一個或多個陣列的單元合併起來,一個陣列中的數值在前一個陣列的後面附加。傳回作為結果的陣列。 
如果輸入的陣列中有相同的字串鍵名,則該鍵名後面的值將覆寫前一個值。然而,如果數組包含數字鍵名,後面的值將不會覆蓋原來的值,而是附加到後面。 
如果只給了一個陣列且該陣列是數字索引的,則鍵名會以連續方式重新索引。
複製程式碼 程式碼如下: 
$fruits = array("apple","banana","pear"); 
$numbered = array("1","2","3"); 
$ cards = array_merge($fruits, $numbered); 
print_r($cards); 
// output 
// Array ( [0] => apple [1] => banana [2] => pear [3] => 1 [4] => 2 [5] => 3 ) 
?> 

2. 追加數組 
array_merge_recursive()函數與array_merge()相同,可以將兩個或多個數字組合併在一起,形成一個聯合的數組.兩者之間的差異在於,當某個輸入數組中的某個鍵己經存在於結果數組中時該函數會採取不同的處理方式. array_merge()會覆寫前面存在的鍵/值對,替換為目前輸入數組中的鍵/值對,而ar​​ray_merge_recursive()將把兩個值合併在一起,形成一個新的數組,並以原有的鍵作為數組名。還有一個數字組合並的形式,就是遞歸追加數組。其形式為: 

複製程式碼 程式碼如下: 
array array_merge_recursive(array array1,array array2[…,array arrayN]) 

程式實例apple" => "red", "banana" => "yellow"); 
$fruit2 = array("pear" => "yellow", "apple" => "green"); 
$result = array_merge_recursive($green"); 
$result = array_merge_recursive($ fruit1, $fruit2); 
print_r($result); 
// output 
// Array ( [apple] => Array ( [0] => red [1] => green ) [banana] => yellow [pear ] => yellow ) 
?> 

現在鍵apple 指向一個數組,這個數組由兩個顏色值組成的索引數組。 
3. 連接陣列 
array_combine()函數會得到一個新數組,它由一組提交的鍵和對應的值組成。其形式為: 
複製程式碼 程式碼如下: 
array array_combine(array keys,array values) 

注意,兩個輸入陣列必須大小相同,且不能為空白。範例如下 
複製程式碼 程式碼如下: 
$name = array("apple", "banana", "orange"); 
$color = array("red", "yellow", "orange");
$fruit = array_combine($name, $color); 
print_r($fruit); 
// output 
// Array ( [apple] => red [banana] => yellow [orange] => orange ) ? > 

4. 分割陣列array_slice() 
array_slice()函數會傳回陣列中的一部分,從鍵offset開始,到offset+length位置結束。其形式: 

複製程式碼 程式碼如下: 
array array_slice (array array, int offset[,int length]) 

offset 為正值時,分割值將從陣列開頭的offset 位置開始; ,則拆分從距離數組末尾的offset 位置開始。如果省略了可選參數length,則分割將從offset 開始,一直到陣列的最後一個元素。如果給出了length 且為正數,則會在距數組開頭的offset+length 位置結束。相反,如果給出了length且為負數,則在距數組開頭的count(input_array)-|length|位置結束。考慮一個例子: 
複製程式碼 程式碼如下: 
$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon"); 
$subset = array_slice($fruits, 3); 
print_r($subset); 
// output 
// Array ( [0] => Pear [1] => Grape [2] => Lemon [3] => Watermelon ) 
?> 

然後我們使用下負長度: 
複製程式碼 程式碼如下: 
$fruits = array("Apple", "Banana", "Orange", "Pear", "Gray("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon"); 
$subset = array_slice($fruits, 2, -2); 
print_r($subset); 
// output 
// Array ( [0] => Orange [1] => Pear [2] => Grape ) 
?> 

5. 接合陣列函數會刪除陣列中從offset開始到offset+length 結束的所有元素,並以陣列的形式傳回所刪除的元素。其形式為: 
複製程式碼 程式碼如下: 
array array_splice ( array array , int offset[,length[,array replacement]]為負值時,接合將從距離數組末端的offset 位置開始。如果忽略可選的length 參數,則從offset 位置開始到陣列結束之間的所有元素都會被刪除。如果給出了length 且為正值,則接合將在距數組開頭的offset + leng th 位置結束。相反,如果給出了length且為負值,則結合將在距數組開頭的count(input_array)-length的位置結束。實例如下: 
複製程式碼 程式碼如下: 
$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon"); 
$ subset = array_splice($fruits, 4); 
print_r($fruits); 
print_r($subset); 
// output 
// Array ( [0] => Apple [1] => Banana [2] => Orange [3] => Pear ) 
// Array ( [0] => Grape [1] => Lemon [2] => Watermelon ) 
?> 

可以使用選用參數replacement來指定取代目標部分的陣列。實例如下: 
複製程式碼 程式碼如下: 
$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon"); 
$ subset = array_splice($fruits, 2, -1, array("Green Apple", "Red Apple")); 
print_r($fruits); 
print_r($subset); 
// output 
// Array ( [ 0] => Apple [1] => Banana [2] => Green Apple [3] => Red Apple [4] => Watermelon ) 
// Array ( [0] => Orange [1] => Pear [ 2] => Grape [3] => Lemon ) 
?> 

從程式可以很清楚看到這個函數的使用方法了。 

6. 數組的交集 array_intersect() 
array_intersect()函數傳回一個保留了鍵的數組,這個數組只由第一個數組中出現的且在其他每個輸入數組中都出現的值組成。其形式如下: 

複製程式碼 程式碼如下: 
array array_intersect(array array1,array array2[,arrayN…]) 

下面這個範例將返回在$fruit1數組中出現的且在數組中出現的且在數字中也出現$所有的水果: 
複製程式碼 程式碼如下: 
$fruit1 = array("Apple","Banana","Orange"); 
$fruit2 = array("Pear","Apple","Grape "); 
$fruit3 = array("Watermelon","Orange","Apple"); 
$intersection = array_intersect($fruit1, $fruit2, $fruit3); 
print_r($intersection); // Array ( [0] => Apple ) 
?> 

只有在兩個元素相等且具有相同的資料型別時,array_intersect()函數才會認為它們是相同的。 

7.關聯陣列的交集 array_intersect_assoc() 
函數array_intersect_assoc()基本上與array_intersect()相同,只不過他比較時也考慮了陣列的鍵。因此,只有在第一個陣列中出現,且在所有其他輸入陣列中也出現的鍵/值對才會回到結果陣列中。
形式如下: 

複製代碼 代碼如下: 
array array_intersect_assoc(array array1,array array2[,arrayN…]) 

下面的例子返回了出現在$fruit1在數組中,也出現在$fruit$2的所有鍵/值對: 
複製程式碼 程式碼如下: 
$fruit1 = array("red"=>"Apple","yellow"=>"Banana","orange"=>"Orange") ; 
$fruit2 = array("yellow"=>"Pear","re​​d"=>"Apple","purple"=>"Grape"); 
$fruit3 = array("green"=>"Watermelon", "orange"=>"Orange","re​​d"=>"Apple"); 
$intersection = array_intersect_assoc($fruit1, $fruit2, $fruit3); 
print_r($intersection); 
// output 
// Array ( [red] => Apple ) 
?>array
// () 
函數array_diff()傳回出現在第一個陣列中但其他輸入陣列中沒有的值。這個函數與array_intersect()相反。
複製程式碼 程式碼如下: 
array array_diff(array array1,array array2[,arrayN…]) 

實例如下: 
複製程式碼 代碼Apple: 
複製程式碼 代碼Apple: 
$fruit2 = array("Pear","Apple","Grape"); 
$fruit3 = array("Watermelon","Orange","Apple"); 
$intersection = array_diff($ fruit1, $fruit2, $fruit3); 
print_r($intersection); 
// output 
// Array ( [1] => Banana ) 
?> 

9. 關聯函數的差集合體array_diff_assoc()與array_diff()基本上相同,只是它在比較時也考慮了陣列的鍵。因此,只在第一個陣列中出現而不再其他輸入陣列中出現的鍵/值對才會回到結果陣列中。形式如下: 
複製程式碼 程式碼如下: 
array array_diff_assoc(array array1,array array2[,arrayN…]) 

下面的範例只回傳了[yellow] => Banana,因為這個特殊的鍵/值
下面的範例只回傳了[yellow] => Banana,因為這個特殊的鍵/值出現在$fruit1中,在$fruit2和$fruit3中都不存在。
複製程式碼 程式碼如下: 
$fruit1 = array("red"=>"Apple","yellow"=>"Banana","orange"=>"Orange"); 
$fruit2 = array( "yellow"=>"Pear","re​​d"=>"Apple","purple"=>"Grape"); 
$fruit3 = array("green"=>"Watermelon","orange"=>"Orange ","re​​d"=>"Apple"); 
$intersection = array_diff_assoc($fruit1, $fruit2, $fruit3); 
print_r($intersection); 
// output 
// Array> ) 
?> 

使用陣列的過程中常常要遍歷陣列。通常需要遍歷數組並獲得各個鍵或值(或同時獲得鍵和值),所以毫不奇怪,PHP為此提供了一些函數來滿足需求。許多函數能完成兩項任務,不僅能取得目前指標位置的鍵或值,還能將指標移向下一個適當的位置。 

10. 取得目前陣列鍵 key() 
key()函數傳回input_array中目前指標所在位置的鍵。形式如下: 
複製程式碼 程式碼如下: 
mixed key(array array) 

下面的範例透過迭代處理陣列並移動指標來輸出$fruits陣列的按鍵: 
複製碼apple"=>"red", "banana"=>"yellow"); 
while ($key = key($fruits)) { 
printf("%s
", $key); 
next( $fruits); 

// apple 
// banana 

注意,每次呼叫key()時不會移動指針。為此需要使用next()函數,這個函數的唯一功能就是完成推進指標的任務。 

11. 取得目前陣列值 current() 
current()函數傳回數組中目前指標所在位置的陣列值。形式如下: 
複製程式碼 程式碼如下: 
mixed current(array array) 

下面修改前面的例子,這次我們要取得陣列值: 
複製程式碼 程式碼如下: 
$fruits = array(app"apple" "red", "banana"=>"yellow"); 
while ($fruit = current($fruits)) { 
printf("%s
", $fruit); 
next($fruits);

// red 
// yellow 

12. 取得目前陣列鍵與值each() 
each()函數傳回input_array的目前鍵/值對,並將指標推進一個位置。其形式如下: 
複製程式碼 程式碼如下: 
array each(array array) 

傳回的陣列包含四個按鍵,鍵0和key包含鍵名,而鍵1和value則包含對應的資料。如果執行each()前指標位於陣列結尾,則傳回false。
複製程式碼 程式碼如下: 
$fruits = array("apple", "banana", "orange", "pear"); 
print_r ( each($fruits) ); 
// Array ( [1] => apple [value] => apple [0] => 0 [key] => 0 ) 

each() 經常和 list() 結合使用來遍歷數組。此範例與上例類似,但循環輸出了整個陣列: 
複製程式碼 程式碼如下: 
$fruits = array("apple", "banana", "orange", "pear"); 
reset($fruits);
while (list($key, $val) = each($fruits)) 

echo "$key => $val
"; 

// 0 => apple 
// 1 = banana 
// 2 => orange 
// 3 => pear 

因為將一個數組賦值給另一個數組時會重置原來的數組指針,因此在上例中如果我們在循環內部將$fruits 賦給原來的數組指針,因此在上例中如果我們在循環內部將$fruits 賦給原來的數組指針,因此在上例中如果我們在循環內部將$fruits 賦給原來的數組指針了另一個變數的話將會導致無限迴圈。 
這就完成了陣列的遍歷。 

查找、篩選與搜尋陣列元素是陣列操作的一些常見功能。下面來介紹幾個相關的函數。 

13. in_array()函數 
in_array()函數在陣列中總搜尋一個特定值,如果找到這個值回傳true,否則回傳false。其形式如下: 
複製程式碼 程式碼如下: 
boolean in_array(mixed needle,array haystack[,boolean strict]); 

變數來看下面的例子,找出apple是否已經在陣列中,如果在,資訊: 
複製程式碼 程式碼如下: 
$fruit = "apple"; 
$fruits = array("apple","banana","orange","pear"); 
if( in_array($fruit,$fruits) )
echo "$fruit 已經在數組中"; 

第三個參數可選,它強制in_array()在搜尋時考慮類型。 


14. array_key_exists()函數 
如果在一個陣列中找到一個指定的鍵,函數array_key_exists()傳回true,否則回傳false。形式如下: 
複製程式碼 程式碼如下: 
boolean array_key_exists(mixed key,array array); 

下面的範例將在陣列鍵中搜尋apple,如果找到,輸出此水果的顏色: 









:
$fruit["apple"] = "red"; 
$fruit["banana"] = "yellow"; 
$fruit["pear"] = "green"; 
if(array_key_exists("apple", $fruit )){ 
printf("apple's color is %s",$fruit["apple"]); 

//apple's color is red 

15. array_search() color is red 

15. array_search())函數在一個函數中搜尋一個數字組一個指定的值,如果找到則傳回對應的鍵,否則傳回false。其形式如下: 
複製代碼 代碼如下: 
mixed array_search(mixed needle,array haystack[,boolean strict]) 

下面的例子在$fruits中搜索一個特定的日期(December 7),如果找到,則返回相應州的相關資訊: 
複製代碼 代碼如下: 
$fruits["apple"] = "red"; 
$fruits["banana"] = "yellow"; 
$fruits["watermelon"]="green";
$founded = array_search("green", $fruits); 
if($founded) 
printf("%s was founded on %s.",$founded, $fruits[$founded]); founded on green. 

16. array_keys()函數 
array_keys()函數傳回一個數組,其中包含所搜尋數組中找到的所有鍵。其形式如下: 

複製程式碼 程式碼如下: 
array array_keys(array array[,mixed search_value]) 

如果包含可選參數search_value,則只會傳回與該值相符的鍵。下面的範例將輸出$fruit陣列中找到的所有陣列: 
複製程式碼 程式碼如下: 
$fruits["apple"] = "red"; 
$fruits["banana"] = "yellow"; 
$fruits[fruits["banana"] = "yellow"; 
$fruits[ "watermelon"]="green"; 
$keys = array_keys($fruits); 
print_r($keys); 
//Array ( [0] => apple [1] => banana [2] => watermelon )

17. array_values()函數 
array_values()函數傳回一個陣列中的所有值,並自動提供傳回的陣列數值索引。形式如下: 
複製程式碼 程式碼如下: 
array array_values(array array) 
🎜下面的範例將取得$fruits中找到的各元素的值: 🎜複製程式red"; 🎜$fruits["banana"] = "yellow"; 🎜$fruits["watermelon"]="green"; 🎜$values = array_values($fruits); 🎜print_r($values); ( [0] => red [1] => yellow [2] => green ) 🎜🎜有時候我們需要擴充一個數組,或是刪掉數組的一部分,PHP為擴充和縮小數組提供了一些函數。對於那些希望模仿各種佇列實作(FIFO、LIFO)的程式設計師來說,這些函數可以提供便利。顧名思義,從這些函數的函數名(push、pop、shift和unshift)就清楚地反映出其作用。 
PS:傳統的佇列是一種資料結構,刪除元素與加入元素的順序相同,就稱為先進先出,或FIFO。相反,堆疊是另一個資料結構,其中刪除元素的順序與加入時的順序相反,這成為後進先出,或LIFO。 


18. 在陣列頭中加入元素 
array_unshift()函數在陣列頭中加入元素。所有己有的數值鍵都會相應地修改,以反映其在數組中的新位置,但是關聯鍵不受影響。形式如下: 
複製程式碼 程式碼如下: 
int array_unshift(array array,mixed variable[,mixed variable]) 

下面這個範例在$fruits陣列前面加入了兩種水果碼= array("apple","banana"); 
array_unshift($fruits,"orange","pear") 
// $fruits = array("orange","pear","apple","banana") ; 

19. 在陣列尾加上元素 
array_push()函數的回傳值是int型,是壓入資料後陣列中元素的個數,可以為此函數傳遞多個變數作為參數,同時向陣列壓入多個變數。其形式為: 
複製程式碼 程式碼如下: 
(array array,mixed variable [,mixed variable...]) 

下面這個範例在$fruits陣列中又增加了兩顆水果: 
:複製程式碼$fruits = array("apple","banana"); 
array_push($fruits,"orange","pear") 
//$fruits = array("apple","banana","orange","pear ") 

20. 從陣列頭刪除值 
array_shift()函數刪除並傳回陣列中找到的元素。結果是,如果使用的是數值健,則所有對應的值都會下移,而使用關聯鍵的陣列不受影響。其形式為 
複製程式碼 程式碼如下: 
mixed array_shift(array array) 

下面的範例刪除了$fruits陣列中的第一個元素apple: 
複製程式"banana","orange","pear"); 
$fruit = array_shift($fruits); 
// $fruits = array("banana","orange","pear") 
// $fruit = " apple"; 

21. 從陣列尾刪除元素 
array_pop()函數刪除並傳回陣列的最後一個元素。其形式為: 
複製程式碼 程式碼如下: 
mixed array_pop(aray target_array); 

下面的範例從$states陣列中刪除了最後一個州的: 
複製碼"banana","orange","pear"); 
$fruit = array_pop($fruits); 
//$fruits = array("apple","banana","orange"); 
//$fruit = "pear"; 

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

php怎么实现几秒后执行一个函数php怎么实现几秒后执行一个函数Apr 24, 2022 pm 01:12 PM

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有没有下标php字符串有没有下标Apr 24, 2022 am 11:49 AM

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php怎么读取字符串后几个字符php怎么读取字符串后几个字符Apr 22, 2022 pm 08:31 PM

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php怎么查找字符串是第几位php怎么查找字符串是第几位Apr 22, 2022 pm 06:48 PM

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器