概述
PHP 中的陣列實際上是一個有序映射,映射是一種把 values 關聯到 keys 的類型。
PHP 數組可以同時含有 integer 和 string 類型的鍵名,因為 PHP 實際上並沒有區分索引數組和關聯數組。
鍵(key)可以是一個整數 integer 或字串 string
值(value)可以是任意類型的值
數組的定義
有兩種方式
可以用array() 語言結構來新建一個數組
<code>array( key => value , ... ) </code>
自5.4 起可以使用短數組定義語法,用[ ] 替代array()
最後一個陣列單元之後的逗號可以省略。通常用於單行數組定義中,例如常用 array(1, 2) 而不是 array(1, 2, )。對多行數組定義通常保留最後一個逗號,這樣要新增一個單元時會更方便。
數組的鍵
鍵(key)可是是一個整數 integer 或字串 string
此外 key 會有如下的強制轉換
如果在數組定義中多個單元都使用了同一個鍵名,則只使用了最後一個,之前的都被覆蓋了
如果對給出的值沒有指定鍵名,則取當前最大的整數索引值,而新的鍵名將是該值加一;如果目前還沒有整數索引,則鍵名將為0。
$foo['bar'] 與$foo[bar]
對於$foo[bar],如果沒有常數定義為bar,PHP 將把它替代為'bar' 並使用之
<code>foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statement </code>
<code>$a = array(1 => 'one', 2 => 'two', 3 => 'three'); unset($a[2]); /* will produce an array that would have been defined as $a = array(1 => 'one', 3 => 'three'); and NOT $a = array(1 => 'one', 2 =>'three'); */ $b = array_values($a); // Now $b is array(0 => 'one', 1 =>'three') </code>