PHP 的陣列同時擁有拼雜表 HASH TABLE 和 索引表 INDEX TABLE 的特性。(關聯字索引式陣列 ASSOCIATIVE ARRAY 和 矢量 VECTOR 就是兩個例子)
在 PHP 中 數值索引式和關聯字索引式這兩類陣列其實上是一樣的。 你可用 list() 或 array() 函數來建立陣列, 也可以直接指定陣列中元素的值。
假如沒有給出陣列元素的參照標號, PHP 會在陣列最未端加入一個元素, 並把數值存到該元素中去。 用這個特點你可以很簡單地建立一個陣列。
要把陣列中的元素排序, 可按陣列的形態調用 asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort(), uksort() 等函數。
count() 函數會給出陣列中有多少個元素。
高維陣列(多維陣列) 的使用其實是很簡單的。 你只要在陣列後面加多一個引數 "[ ]", 陣列便多了一個維數:
$a[1] = $f; # one dimensional examples $a["foo"] = $f; $a[1][0] = $f; # two dimensional $a["foo"][2] = $f; # (you can mix numeric and associative indices) $a[3]["bar"] = $f; # (you can mix numeric and associative indices) $a["foo"][4]["bar"][0] = $f; # four dimensional! |
PHP3 並不允許直接在文句之中參照多維陣列中的元素。 如下例的程式將產生錯誤的結果。
用 PHP3, 以上運算的結果將是 This won't work: Array[bar]! 對付這個問題要用到 "." 文句拼合運算符才行:在 PHP4 版本中, 用花括號在文句中把陣列參照包起來就解決了以上的古怪問題 :
要填滿一個多維的陣列有很多辦法。 但比較難弄懂的是用 array() 函數來指定關聯字索引式陣列 ASSOCIATIVE ARRAY 中的值。 以下兩段程式碼的功能是完全一樣的 :
# Example 1: $a["color"] = "red"; $a["taste"] = "sweet"; $a["shape"] = "round"; $a["name"] = "apple"; $a[3] = 4; # Example 2: $a = array( "color" => "red", "taste" => "sweet", "shape" => "round", "name" => "apple", 3 => 4 ); |
用巢狀的 array() 函數可以建立出多維的陣列 :
<?php $a = array( "apple" => array( "color" => "red", "taste" => "sweet", "shape" => "round" ), "orange" => array( "color" => "orange", "taste" => "tart", "shape" => "round" ), "banana" => array( "color" => "yellow", "taste" => "paste-y", "shape" => "banana-shaped" ) ); echo $a["apple"]["taste"]; # will output "sweet" ?> |