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"]
2つの引数、言語の配列と新しい言語を取るadd_to_language_list関数を定義します。
<?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);
// => []
1つの引数(言語の配列)を取るcurrent_language関数を定義します。配列の最初の言語を返します。配列には必ず1つ以上の要素があるものとします。
<?php
$language_list = language_list("PHP", "Prolog");
// => ["PHP", "Prolog"]
$first = current_language($language_list);
// => "PHP"
1つの引数(言語の配列)を取るlanguage_list_length関数を定義します。配列に含まれる言語の数を返します。
<?php
$language_list = language_list("PHP", "Prolog", "Wren");
// => ["PHP", "Prolog", "Wren"]
language_list_length($language_list);
// => 3