PHP陣列的詳細解讀

edithfang發表於2015-01-15
陣列的定義
       
陣列的本質是管理和操作一組變數,陣列中可以儲存任意長度的資料,也可以儲存任意型別的資料。陣列中的單元稱為元素,每個元素包括下標(鍵)和值,訪問元素的時候,是透過下標來訪問,包括一維陣列,二維陣列及多維陣列(即陣列的巢狀),PHP中分為索引陣列和關聯素組。

(1)索引陣列:使用整數作為索引,如$arr=array('PHP課程','HTML課程','CSS課程');

(2)關聯陣列:使用字串作為索引,如$arr=array('ID'=>1,'name'=>'PHP課程','class=>'PHP100');
 
PHP陣列的宣告和使用

1. 直接為陣列元素賦值宣告

如果索引下標不給出,就會從0開始順序索引;如果給出索引下標,下一個就會從最大的下標開始增1;如果後面出現前面的下標,則會為前面的元素重新賦值;混合宣告時,索引陣列和關聯陣列不互相影響。

例如:

$array[0]="I";
$array[1]="love";
$array[2]="PHP";
print_r($array);

其中,print_r()是一個特殊的函式,允許你檢視PHP陣列變數裡面的值,會按照一定鍵值和元素的順序顯示出該陣列中的所有元素。這對於程式的除錯很有幫助。

2.使用array()函式宣告

預設是索引陣列,如果為關聯陣列,需要為陣列指定下標,使用“鍵=>值”,多個成員之間使用" , "分割。

例如:

$fruits = array('red' => 'apple', 'yellow' => 'banana', 'purple' => 'plum', 'green' => 'grape'); 
print_r($fruits);
 
PHP陣列的遍歷

我們經常要對陣列進行遍歷,PHP中遍歷陣列的方法有多種,可以使用for()迴圈遍歷陣列,在這裡,經常會用到sizeof()函式,該函式是常用的陣列函式之一,返回陣列的大小,即讀取陣列內元素的個數,作為迴圈計數器的上限值。還可以使用list()函式遍歷陣列,它只能用於數字索引的陣列,且數字索引從0開始。

PHP中還可以使用專門用於對陣列迴圈目的函式:foreach()。foreach()對傳遞給它的陣列中的每一個元素執行一次,它不需要計數器或呼叫函式sizeof(),它可以自動跟蹤陣列在陣列中的位置,同時需要更少的維護。foreach()有兩種語法結構:

(1)foreach (array_expression as $value) 
(2)foreach (array_expression as $key => $value)

第一種結構會遍歷給定的array_expression 陣列,每次迴圈中,當前單元的值被賦給$value 並且陣列內部的指標向前移一步。第二種結構中,當前單元的鍵名也會在每次迴圈中被賦給$key。

foreach 迴圈執行到結束,原陣列的內部指標將指向陣列的結尾。例如:

foreach ($arr as $value) {
    echo "Value: $value ";
}
foreach ($arr as $key => $value) {
    echo "Key: $key; Value: $value ";
}
 
PHP陣列的排序

對陣列元素進行排序,我們在做專案時使用也比較多,涉及的相關函式也有很多,比如 sort(),rsort(),usort(),ksort(),uasort(),uksort() 等等,這裡先介紹幾個。使用sort()和rsort()分別對陣列進行升序和降序,例如:

$arr=array(23,4,65,11,64,8);
sort($arr);
print_r($arr);

執行結果:

Array ( [0] => 4 [1] => 8 [2] => 11 [3] => 23 [4] => 64 [5] => 65 )

另外,我們可以注意到透過sort函式排序之後,陣列原有的索引鍵名會被重新分配。rsort()會對陣列進行逆向排序。

如果使用了關聯陣列,在排序後還要保持關鍵字和值的排序一致,這就需要使用ksort()和asort()函式,例如:

$array=array('php'=>1,'jsp'=>2,'asp'=>3);
ksort($array);
print_r($array);

執行結果:

Array ( [asp] => 3 [jsp] => 2 [php] => 1 ) 
 
希望以上內容可以幫助你更好地理解和使用PHP陣列。
來自:PHP100
評論(2)

相關文章