傳統上把數組(array)定義為一組有某種共同特性的元素,這裡的共同特性包括相似性(車模、棒球隊、水果類型等)和類型(例如所有元素都是字符串或整數)等,每個元素由一個特殊的標識符來區分,這稱為健(key)。請注意,上面這句話中的傳統上一詞,因為現在可以摒棄這種定義,數組結構中可以包括完全無關的元素。PHP則更進一步,數組中的元素甚至可以不屬於同一種類型。例如,一個數組可能包含州名、郵政編碼、考試成績或撲克牌等元素。
每個實體包含兩個項:前面提到的健(key)和值(value)。可以通過查詢鍵來獲取其相應的值。這些鍵可以是數值(numerical) 健或關聯(associative)健。數值鍵與值沒有真正的聯系,它們只是值在數組中的位置。例如,一個數組中包含按字母順序排列的水果名,鍵0表示apple,鍵2表示pear。使用PHP語法,該數組如下:
$fruits = array( "0"=>"apple", "1"=>"banana" "2"=>"pear" );
使用數組索引,可以如下引用第一個元素(apple):
$fruits[0]
PHP的數值索引組以位置0起始,而不是1。
與此不同的是,關聯鍵與值有一定關系,而不是值在數組中的位置。使用數值索引值不可行時,以關聯的方式來映射數組會特別方便。例如,你可能希望創建一個將水果縮寫映射到水果名的數組,如AP/apple、BA/banana和PE/Pear。使用PHP語法,該數組如下:
$fruits = array( "AP"=>"apple", "BA"=>"banana", "PE"=>"pear" );
可以如下引用apple:
$fruits["AP"];
還可以創建包含數組的數組,這稱為多維數組(multidimensional arrays)。例如,可以使用一個多維數組存儲水果的信息。使用PHP語法,該數組如下:
$fruits = array( "apple"=>array( "name"=>"apple", "color"=>"red" ), "banana"=>array( "name"=>"banana", "color"=>"yellow" ) );
然後可以如下引用apple的color:
$states["apple"]["color"];
這將返回以下值:
red
你自然會想知道遍歷數組的方法。PHP提供了很多遍歷數組的方法。無論使用哪一種方法,要記住,它們都依賴於一種稱為數組指針(array pointer)的特性。數組指針就如同書簽,告訴你正在檢查的數組位置。你並不是直接操作數組指針,而是使用內置的語言特性或函數來遍歷數組。但是,理解這個基本概念很有用。
數組是PHP最重要的數據結構之一,數組在PHP的用處很廣泛。與其他很多語言的數組實現方式不同,PHP不需要在創建數組時指定其大小。事實上,因為PHP是一種松散類型的語言,所以甚至不需要在使用數組前先行聲明,盡管沒有限制,PHP仍提供了正式和非正式的數組聲明方法。兩個方法各有優點,都值得學習。下面將分別討論這兩種方法,首先來介紹非正式的方法。
要引用PHP數組中的各個元素,可以用一對中括號來指示。因為數組沒有大小限制,所以只需建立引用就可以創建數組,例如:
$fruits[0] = "apple";
然後,可以如下顯示數組$fruits的第一個元素:
echo $fruits[0] = "apple";
接下來,可以為數組索引映射新值,從而添加其他的值,如下:
$fruits[1] = "banana"; $fruits[2] = "pear";
有趣的是,如果認為索引值是數組索引而且是遞增的,還可以在創建時省略索引值:
$fruits[] = "apple"; $fruits[] = "banana"; $fruits[] = "pear";
用這種方式創建關聯數組也同樣很簡單,只不過必須一直使用鍵。下面的實例創建了一個數組,它將水果映射到其顏色:
$fruits["apple"] = "red"; $fruits["banana"] = "yellow"; $fruits["pear"] = "yellow";
使用array()創建數組
array()函數接受0個或多個元素作為輸入,返回一個包含這些收入元素的數組。其形式如下:
array array([item1,[,item2…[,itemN]]])
下面是一個使用array()創建索引數組的例子:
$fruits = array("apple","banana","pear");
還可以使用array()創建一個關聯數組,如下:
$fruits = array( "AP"=>"apple", "BA"=>"banana", "PE"=>"pear" );