今天學習了PHP數組,整理下相關知識點。 PHP數組是什麼? php數組是一個能在單個變數中存儲多個值的特殊變數。 如:你有一個項目清單(人名清單),將其存儲到單個變數中,如下: 如果這個清單裡面有上百號人名,你要從中找到指定的某一個這樣會有點麻煩了。 解決這個問題的辦法就是創建一個數組。 數組可以 ...
今天學習了PHP數組,整理下相關知識點。
PHP數組是什麼?
php數組是一個能在單個變數中存儲多個值的特殊變數。
如:你有一個項目清單(人名清單),將其存儲到單個變數中,如下:
$name1 = '張三'; $name2 = '李四'; $name3 = '王五'; $name4 = '趙六';
....
如果這個清單裡面有上百號人名,你要從中找到指定的某一個這樣會有點麻煩了。
解決這個問題的辦法就是創建一個數組。
數組可以在單個變數中存儲多個值,並且您可以根據鍵訪問其中的值。
在 PHP 中,array() 函數用於創建數組:
array();
在 PHP 中,有三種類型的數組:
① 數值數組 - 帶有數字 ID 鍵的數組
② 關聯數組 - 帶有指定的鍵的數組,每個鍵關聯一個
③ 多維數組 - 包含一個或多個數組的數組
例1(數值數組):
$name = array( '張三', '李四', '王五', '趙六', ); print_r($name[0])//列印結果:張三
例2(關聯數組):
$name = array( 'name1'=>"張三", 'name2'=>"李四", 'name3'=>"王五", 'name4'=>"趙六", ); print_r($name['name1'])//列印結果:張三
例3(多維數組):
$name = array( 'name1'=>array( '張三', '李四', '王五', '趙六', ), 'name2'=>array( '王朝', '馬漢', '張龍', '趙虎', ), ); print_r($name['name1'])//列印結果:Array ( [0] => 張三 [1] => 李四 [2] => 王五 [3] => 趙六 ) print_r($name['name1'][0])//列印結果:張三
例4:
$name = array(); $name[0] = '張三'; $name[1] = '李四'; $name[3] = '王五'; $name[] = '趙六'; print_r($name)//列印結果:Array ( [0] => 張三 [1] => 李四 [3] => 王五 [4] => 趙六 )
例4中第四項沒有給索引值,那麼該項中[] 裡面的索引值就是該數組中最大的數字索引(最大的數字索引是3)上+1,也就是4。
再來認識一下 array_keys() 函數和array_values() 函數(基本用法可以參照例5)
array_keys() 函數
array_keys() 函數返回包含數組中所有鍵名的一個新數組。
如果提供了第二個參數,則只返回鍵值為該值的鍵名。
如果 strict 參數指定為 true,則 PHP 會使用全等比較 (===) 來嚴格檢查鍵值的數據類型。
array_values() 函數
array_values() 函數返回一個包含給定數組中所有鍵值的數組,但不保留鍵名。
提示:被返回的數組將使用數值鍵,從 0 開始並以 1 遞增。
例5:
$name = array( 'name1'=>'張三', 'name2'=>'李四', 'name3'=>'王五', 'name4'=>'趙六', ); $keys = array_keys( $name ); $values = array_values( $name ); print_r(implode(',',$keys));//列印結果:name1,name2,name3,name4 print_r(implode(',',$values))//列印結果:張三,李四,王五,趙六
接著來看看foreach 迴圈
foreach 迴圈用於遍曆數組。
語法:
foreach ($array as $value) { 要執行代碼; }
每進行一次迴圈,當前數組元素的值就會被賦值給 $value 變數(數組指針會逐一地移動),在進行下一次迴圈時,您將看到數組中的下一個值。(如下例6)
例6:
$name = array( 'name1' => array( '張三', '李四', ), 'name2'=> array( '王五', '趙六', ) ); foreach( $name as $k => $v ){ echo $k;//列印結果:name1,name2, foreach( $v as $k2 => $v2 ){ echo '---->' . $v2;//列印結果:name1---->張三---->李四,name2---->王五---->趙六, } echo ','; }
目前剛開始接觸到PHP數組的知識,就整理了以上幾個函數的作用。如需完整的數組函數參考手冊,請訪問W3C的 PHP 數組參考手冊。
函數 | 描述 |
---|---|
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() | 使用用戶自定義的比較函數對數組進行排序。 |
本博文的部分內容摘自菜鳥教程和W3C。