首頁 後端開發 php教程 PHP數組函數(合併,拆分,追加,查找,刪除等)

PHP數組函數(合併,拆分,追加,查找,刪除等)

Feb 06, 2017 am 09:44 AM

1. 合併陣列


array_merge()函數將數字組合併在一起,傳回一個聯合的陣列。所得的數組以第一個輸入數組參數開始,並依後面數組參數出現的順序依序迫加。其形式為:

array array_merge (array array1 array2…,arrayN)
登入後複製

這個函數將一個或多個數組的單元合併起來,一個數組中的值附加在前一個數組的後面。傳回作為結果的陣列。


如果輸入的陣列中有相同的字串鍵名,則該鍵名後面的值將覆蓋前一個值。然而,如果數組包含數字鍵名,後面的值將不會覆蓋原來的值,而是附加到後面。


如果只給了一個數組並且該數組是數字索引的,則鍵名會以連續方式重新索引。

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

array array_merge_recursive(array array1,array array2[…,array arrayN])
登入後複製

 

程式實例如下:

<?php  
$fruit1 = array("apple" => "red", "banana" => "yellow");  
$fruit2 = array("pear" => "yellow", "apple" => "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)
登入後複製

 

注意,兩個輸入陣列必須大小相同,不能為空。範例如下

<?php  
$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 為負值,則拆分從距數組末尾的offset 位置開始。如果省略了可選參數length,則分割將從offset 開始,一直到陣列的最後一個元素。如果給出了length 且為正數,則會在距數組開頭的offset+length 位置結束。相反,如果給出了length且為負數,則在距數組開頭的count(input_array)-|length|位置結束。考慮一個例子:

<?php  
  
$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 )  
?>
登入後複製

 

然後我們使用下負長度:

<?php  
  
$fruits = array("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. 接合數組array_splice()


所有元素,並以陣列的形式傳回所刪除的元素。其形式為:

array array_splice ( array array , int offset[,length[,array replacement]])
登入後複製

 

offset 為正值時,則接合將從距數組開頭的offset 位置開始,offset 為負值時,接合將從距數組末尾的offset 位置開始。如果忽略可選的length 參數,則從offset 位置開始到陣列結束之間的所有元素都會被刪除。如果給出了length 且為正值,則接合將在距數組開頭的offset + leng th 位置結束。相反,如果給出了length且為負值,則結合將在距數組開頭的count(input_array)-length的位置結束。實例如下:

<?php  
  
$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來指定取代目標部分的陣列。例子如下:

<?php  
  
$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數組中出現的且在$fruit2和$fruit3中也出現的所有的水果:

<?php  
$fruit1 = array("Apple","Banana","Orange");  
$fruit2 = array("Pear","Apple","Grape");  
$fruit3 = array("Watermelon","Orange","Apple");  
$intersection = array_intersect($fruit1, $fruit2, $fruit3);  
print_r($intersection);  
  
// output  
// Array ( [0] => Apple )  
?>
登入後複製

 相等且具有相同的資料類型時,array_intersect()函數才會認為它們是相同的。

 

7. 關聯數組的交集 array_intersect_assoc()

函數array_intersect_assoc()與array_intersect()基本相同,只不過他在比較中還考慮了數組的鍵。因此,只有在第一個陣列中出現,且在所有其他輸入陣列中也出現的鍵/值對才會回到結果陣列中。

形式如下:

array array_intersect_assoc(array array1,array array2[,arrayN…])
登入後複製

 

下面的例子回傳了出現在$fruit1數組中,也同時出現在$fruit2與$fruit3中的所有鍵/值對:

<?php  
$fruit1 = array("red"=>"Apple","yellow"=>"Banana","orange"=>"Orange");  
$fruit2 = array("yellow"=>"Pear","red"=>"Apple","purple"=>"Grape");  
$fruit3 = array("green"=>"Watermelon","orange"=>"Orange","red"=>"Apple");  
$intersection = array_intersect_assoc($fruit1, $fruit2, $fruit3);  
print_r($intersection);  
  
// output  
// Array ( [red] => Apple )  
?>
登入後複製

 集array_diff()

 

函數array_diff()傳回出現在第一個陣列中但其他輸入陣列中沒有的值。這個函數與array_intersect()相反。

array array_diff(array array1,array array2[,arrayN…])
登入後複製

 

實例如下:

<?php  
$fruit1 = array("Apple","Banana","Orange");  
$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(
9.

函数array_diff_assoc()与array_diff()基本相同,只是它在比较时还考虑了数组的键。因此,只在第一个数组中出现而不再其他输入数组中出现的键/值对才会返回到结果数组中。其形式如下:

array array_diff_assoc(array array1,array array2[,arrayN…])
登入後複製


下面的例子只返回了[yellow] => Banana,因为这个特殊的键/值对出现在$fruit1中,而在$fruit2和$fruit3中都不存在。

<?php  
$fruit1 = array("red"=>"Apple","yellow"=>"Banana","orange"=>"Orange");  
$fruit2 = array("yellow"=>"Pear","red"=>"Apple","purple"=>"Grape");  
$fruit3 = array("green"=>"Watermelon","orange"=>"Orange","red"=>"Apple");  
$intersection = array_diff_assoc($fruit1, $fruit2, $fruit3);  
print_r($intersection);  
  
// output  
// Array ( [yellow] => Banana )  
?>
登入後複製


使用数组的过程中经常要遍历数组。通常需要遍历数组并获得各个键或值(或者同时获得键和值),所以毫不奇怪,PHP为此提供了一些函数来满足需求。许多函数能完成两项任务,不仅能获取当前指针位置的键或值,还能将指针移向下一个适当的位置。

10. 获取当前数组键 key()


key()函数返回input_array中当前指针所在位置的键。其形式如下:

mixed key(array array)
登入後複製


下面的例子通过迭代处理数组并移动指针来输出$fruits数组的键:

$fruits = array("apple"=>"red", "banana"=>"yellow");  
while ($key = key($fruits)) {  
    printf("%s <br />", $key);  
    next($fruits);  
}  
  
// apple   
// banana
登入後複製

注意,每次调用key()时不会移动指针。为此需要使用next()函数,这个函数的唯一作用就是完成推进指针的任务。

11. 获取当前数组值 current()

current()函数返回数组中当前指针所在位置的数组值。其形式如下:

mixed current(array array)
登入後複製

下面修改前面的例子,这一次我们要获取数组值:

$fruits = array("apple"=>"red", "banana"=>"yellow");  
while ($fruit = current($fruits)) {  
    printf("%s <br />", $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<br />";  
    }  
  
// 0 => apple  
// 1 => banana  
// 2 => orange  
// 3 => pear
登入後複製

因为将一个数组赋值给另一个数组时会重置原来的数组指针,因此在上例中如果我们在循环内部将 $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&#39;s color is %s",$fruit["apple"]);  
}  
  
//apple&#39;s color is red
登入後複製


15. array_search()函数

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]);  
  
//watermelon was 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["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中找到的各元素的值:

$fruits["apple"] = "red";  
$fruits["banana"] = "yellow";  
$fruits["watermelon"]="green";  
$values = array_values($fruits);  
print_r($values);  
  
//Array ( [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数组前面添加了两种水果:

$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:

$fruits = array("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数组删除了最后的一个州:

$fruits = array("apple","banana","orange","pear");  
$fruit = array_pop($fruits);  
//$fruits = array("apple","banana","orange");  
//$fruit = "pear";
登入後複製

以上就是PHP数组函数(合并,拆分,追加,查找,删除等)的内容,更多相关内容请关注PHP中文网(www.php.cn)!


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

See all articles