標籤:交集 [1] compact array rod 數組元素 ble 遞迴 基本
今天學習了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。
[前端小小白的學習之路]--PHP數組