數組是一個能在單個變量中存儲多個值的特殊變量。php
在 PHP 中,array() 函數用於建立數組:web
array();算法
在 PHP 中,有三種類型的數組:數組
數值數組 - 帶有數字 ID 鍵的數組函數
關聯數組 - 帶有指定的鍵的數組,每一個鍵關聯一個值ui
多維數組 - 包含一個或多個數組的數組spa
這裏有兩種建立數值數組的方法:指針
自動分配 ID 鍵(ID 鍵老是從 0 開始):code
$cars=array("Volvo","BMW","Toyota");orm
人工分配 ID 鍵:
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="Toyota";
下面的實例建立一個名爲 $cars 的數值數組,並給數組分配三個元素,而後打印一段包含數組值的文本:
<?php $cars=array("Volvo","BMW","Toyota"); echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . "."; ?>
count() 函數用於返回數組的長度(元素的數量):
<?php $cars=array("Volvo","BMW","Toyota"); echo count($cars); ?>
遍歷並打印數值數組中的全部值,您能夠使用 for 循環,以下所示:
<?php $cars=array("Volvo","BMW","Toyota"); $arrlength=count($cars); for($x=0;$x<$arrlength;$x++) { echo $cars[$x]; echo "<br>"; } ?>
關聯數組是使用您分配給數組的指定的鍵的數組。
這裏有兩種建立關聯數組的方法:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
or:
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
隨後能夠在腳本中使用指定的鍵:
<?php $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); echo "Peter is " . $age['Peter'] . " years old."; ?>
遍歷並打印關聯數組中的全部值,您能夠使用 foreach 循環,以下所示:
<?php $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); foreach($age as $x=>$x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>"; } ?>
多維數組是包含一個或多個數組的數組。
在多維數組中,主數組中的每個元素也能夠是一個數組,子數組中的每個元素也能夠是一個數組。
在這個實例中,咱們建立了一個自動分配 ID 鍵的多維數組:
$families = array ( "Griffin"=>array ( "Peter", "Lois", "Megan" ), "Quagmire"=>array ( "Glenn" ), "Brown"=>array ( "Cleveland", "Loretta", "Junior" ) );
上面的數組將輸出以下:
Array ( [Griffin] => Array ( [0] => Peter [1] => Lois [2] => Megan ) [Quagmire] => Array ( [0] => Glenn ) [Brown] => Array ( [0] => Cleveland [1] => Loretta [2] => Junior ) )
讓咱們試着顯示上面數組中的某個值:
echo "Is " . $families['Griffin'][2] . " a part of the Griffin family?";
上面的代碼將輸出:
Is Megan a part of the Griffin family?
sort() - 對數組進行升序排列
rsort() - 對數組進行降序排列
asort() - 根據關聯數組的值,對數組進行升序排列
ksort() - 根據關聯數組的鍵,對數組進行升序排列
arsort() - 根據關聯數組的值,對數組進行降序排列
krsort() - 根據關聯數組的鍵,對數組進行降序排列
下面的實例將 $cars 數組中的元素按照字母升序排列:
<?php $cars=array("Volvo","BMW","Toyota"); sort($cars); ?>
下面的實例將 $numbers 數組中的元素按照數字升序排列:
<?php $numbers=array(4,6,2,22,11); sort($numbers); ?>
下面的實例將 $cars 數組中的元素按照字母降序排列:
<?php $cars=array("Volvo","BMW","Toyota"); rsort($cars); ?>
下面的實例將 $numbers 數組中的元素按照數字降序排列:
<?php $numbers=array(4,6,2,22,11); rsort($numbers); ?>
下面的實例根據數組的值,對關聯數組進行升序排列:
<?php $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); asort($age); ?>
下面的實例根據數組的鍵,對關聯數組進行升序排列:
<?php $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); ksort($age); ?>
下面的實例根據數組的值,對關聯數組進行降序排列:
<?php $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); arsort($age); ?>
下面的實例根據數組的鍵,對關聯數組進行降序排列:
<?php $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); krsort($age); ?>
函數 | 描述 |
---|---|
array() | 建立數組。 |
array_change_key_case() | 返回其鍵均爲大寫或小寫的數組。 |
array_chunk() | 把一個數組分割爲新的數組塊。 |
array_column() | 返回輸入數組中某個單一列的值。 |
array_combine() | 經過合併兩個數組(一個爲鍵名數組,一個爲鍵值數組)來建立一個新數組。 |
array_count_values() | 用於統計數組中全部值出現的次數。 |
array_diff() | 比較數組,返回兩個數組的差集(只比較鍵值)。 |
array_diff_assoc() | 比較數組,返回兩個數組的差集(比較鍵名和鍵值)。 |
array_diff_key() | 比較數組,返回兩個數組的差集(只比較鍵名)。 |
array_diff_uassoc() | 比較數組,返回兩個數組的差集(比較鍵名和鍵值,使用用戶自定義的鍵名比較函數)。 |
array_diff_ukey() | 比較數組,返回兩個數組的差集(只比較鍵名,使用用戶自定義的鍵名比較函數)。 |
array_fill() | 用給定的鍵值填充數組。 |
array_fill_keys() | 用給定的指定鍵名的鍵值填充數組。 |
array_filter() | 用回調函數過濾數組中的元素。 |
array_flip() | 反轉/交換數組中的鍵名和對應關聯的鍵值。 |
array_intersect() | 比較數組,返回兩個數組的交集(只比較鍵值)。 |
array_intersect_assoc() | 比較數組,返回兩個數組的交集(比較鍵名和鍵值)。 |
array_intersect_key() | 比較數組,返回兩個數組的交集(只比較鍵名)。 |
array_intersect_uassoc() | 比較數組,返回兩個數組的交集(比較鍵名和鍵值,使用用戶自定義的鍵名比較函數)。 |
array_intersect_ukey() | 比較數組,返回兩個數組的交集(只比較鍵名,使用用戶自定義的鍵名比較函數)。 |
array_key_exists() | 檢查指定的鍵名是否存在於數組中。 |
array_keys() | 返回數組中全部的鍵名。 |
array_map() | 將用戶自定義函數做用到給定數組的每一個值上,返回新的值。 |
array_merge() | 把一個或多個數組合併爲一個數組。 |
array_merge_recursive() | 遞歸地把一個或多個數組合併爲一個數組。 |
array_multisort() | 對多個數組或多維數組進行排序。 |
array_pad() | 將指定數量的帶有指定值的元素插入到數組中。 |
array_pop() | 刪除數組中的最後一個元素(出棧)。 |
array_product() | 計算數組中全部值的乘積。 |
array_push() | 將一個或多個元素插入數組的末尾(入棧)。 |
array_rand() | 從數組中隨機選出一個或多個元素,返回鍵名。 |
array_reduce() | 經過使用用戶自定義函數,迭代地將數組簡化爲一個字符串,並返回。 |
array_replace() | 使用後面數組的值替換第一個數組的值。 |
array_replace_recursive() | 遞歸地使用後面數組的值替換第一個數組的值。 |
array_reverse() | 將原數組中的元素順序翻轉,建立新的數組並返回。 |
array_search() | 在數組中搜索給定的值,若是成功則返回相應的鍵名。 |
array_shift() | 刪除數組中的第一個元素,並返回被刪除元素的值。 |
array_slice() | 返回數組中的選定部分。 |
array_splice() | 把數組中的指定元素去掉並用其它值取代。 |
array_sum() | 返回數組中全部值的和。 |
array_udiff() | 比較數組,返回兩個數組的差集(只比較鍵值,使用一個用戶自定義的鍵名比較函數)。 |
array_udiff_assoc() | 比較數組,返回兩個數組的差集(比較鍵名和鍵值,使用內建函數比較鍵名,使用用戶自定義函數比較鍵值)。 |
array_udiff_uassoc() | 比較數組,返回兩個數組的差集(比較鍵名和鍵值,使用兩個用戶自定義的鍵名比較函數)。 |
array_uintersect() | 比較數組,返回兩個數組的交集(只比較鍵值,使用一個用戶自定義的鍵名比較函數)。 |
array_uintersect_assoc() | 比較數組,返回兩個數組的交集(比較鍵名和鍵值,使用內建函數比較鍵名,使用用戶自定義函數比較鍵值)。 |
array_uintersect_uassoc() | 比較數組,返回兩個數組的交集(比較鍵名和鍵值,使用兩個用戶自定義的鍵名比較函數)。 |
array_unique() | 刪除數組中重複的值。 |
array_unshift() | 在數組開頭插入一個或多個元素。 |
array_values() | 返回數組中全部的值。 |
array_walk() | 對數組中的每一個成員應用用戶函數。 |
array_walk_recursive() | 對數組中的每一個成員遞歸地應用用戶函數。 |
arsort() | 對關聯數組按照鍵值進行降序排序。 |
asort() | 對關聯數組按照鍵值進行升序排序。 |
compact() | 建立一個包含變量名和它們的值的數組。 |
count() | 返回數組中元素的數目。 |
current() | 返回數組中的當前元素。 |
each() | 返回數組中當前的鍵/值對。 |
end() | 將數組的內部指針指向最後一個元素。 |
extract() | 從數組中將變量導入到當前的符號表。 |
in_array() | 檢查數組中是否存在指定的值。 |
key() | 從關聯數組中取得鍵名。 |
krsort() | 對關聯數組按照鍵名降序排序。 |
ksort() | 對關聯數組按照鍵名升序排序。 |
list() | 把數組中的值賦給一些數組變量。 |
natcasesort() | 用"天然排序"算法對數組進行不區分大小寫字母的排序。 |
natsort() | 用"天然排序"算法對數組排序。 |
next() | 將數組中的內部指針向前移動一位。 |
pos() | current() 的別名。 |
prev() | 將數組的內部指針倒回一位。 |
range() | 建立一個包含指定範圍的元素的數組。 |
reset() | 將數組的內部指針指向第一個元素。 |
rsort() | 對數值數組進行降序排序。 |
shuffle() | 把數組中的元素按隨機順序從新排列。 |
sizeof() | count() 的別名。 |
sort() | 對數值數組進行升序排序。 |
uasort() | 使用用戶自定義的比較函數對數組中的鍵值進行排序。 |
uksort() | 使用用戶自定義的比較函數對數組中的鍵名進行排序。 |
usort() | 使用用戶自定義的比較函數對數組進行排序。 |