PHP 的陣列是有序映射。
映射是一種把鍵關聯到值的資料結構。
陣列用途廣泛,可以當作線性陣列(就像 C 或 Java 那樣)、清單 [向量]、雜湊表、字典、集合、堆疊或佇列來使用。
鍵是可有可無的,但若要指定,就必須是int或string。
如果沒有提供鍵,PHP 會預設使用從0開始、依序遞增的整數鍵。
$no_keys = ["my", "first", "array"];
$integer_keys = [0 => "my", 1 => "first", 2 => "array"];
$no_keys == $integer_keys // => equal returns true
$no_keys === $integer_keys // => strictly equal returns true
陣列可以儲存各種型別的值。 每個值的型別可以各不相同。
陣列可以宣告成字面值(如上所示,直接寫在程式碼裡),也可以透過函式建立與操作。 使用索引運算子來存取、指定、附加值:
$prime_numbers = [2, 3, 5, 6];
$prime_numbers[3] = 7; // replace 6 with 7
$prime_numbers[] = 11; // array now contains [2, 3, 5, 7, 11]
函式的引數可以這樣指定,讓它能接收任意數量的引數:
<?php
function actOnItems(...$items) {
// $items is an array containing 0 or more values
// used to call the function.
}
actOnItems(1, 2, 3, 4); // $items => [1, 2, 3, 4]
在這個練習中,你需要實作一些函式來操作程式語言陣列。
定義language_list函式,它不接受任何引數,並回傳一個空的陣列。
<?php
language_list();
// => []
修改language_list函式,讓它接受可變數量的程式語言引數(字串)。它應該回傳包含這些程式語言的陣列。
<?php
$language_list = language_list();
// => []
$language_list = language_list("Clojure", "PHP");
// => ["Clojure", "PHP"]
$language_list = language_list("PHP", "Haskell", "Java", "C++", "Rust")
// => ["PHP", "Haskell", "Java", "C++", "Rust"]
定義add_to_language_list函式,它接受 2 個引數:一個程式語言陣列,以及新的程式語言。
<?php
$language_list = language_list();
// => []
$language_list = add_to_language_list($language_list, "Clojure");
// => ["Clojure"]
定義prune_language_list函式,以從程式語言陣列中移除第一個程式語言。
<?php
$language_list = language_list("PHP");
// => ["PHP"]
$language_list = prune_language_list($language_list);
// => []
定義current_language函式,它接受 1 個引數(一個_程式語言陣列_)。
它應該回傳陣列中的第一個程式語言。
假設陣列中至少會有一個項目。
<?php
$language_list = language_list("PHP", "Prolog");
// => ["PHP", "Prolog"]
$first = current_language($language_list);
// => "PHP"
定義language_list_length函式,它接受 1 個引數(一個_程式語言陣列_)。
它應該回傳陣列中程式語言的數量。
<?php
$language_list = language_list("PHP", "Prolog", "Wren");
// => ["PHP", "Prolog", "Wren"]
language_list_length($language_list);
// => 3