前回の記事で説明した通り、単純変数(スカラー型変数)は、1つしか値が入らない変数です。
これに対して、複数の値を入れるためには、複合型変数を用います。
今回は、複合型変数の一種、配列を紹介します。
配列
配列では、複数の値を一まとめに管理します。
定義するときは、array()の()の中、または[]の中に、
値をカンマ区切りで列挙します。
また、1つずつ値を追加していく方法もあります。
その際は、配列名[] = 値とします。
配列の定義例
1 2 3 4 5 6 7 8 9 10 | // 方法1. 最も初期からある方法 $array1 = array ( "A" , "B" , 1); // 方法2. array()でなく[]で挟むので短く書ける $array2 = [ "A" , "B" , 1]; // 方法3. 1つずつ追加するので、動的に配列作成するとき用いる $array3 [] = "A" ; $array3 [] = "B" ; $array3 [] = 1; |
配列の要素
配列の格納した値の1つ1つを要素と言い、
それぞれに0から順に管理用の番号が振られています。
この番号のことをインデックスと言います。
要素を取得する場合はインデックスを指定して取り出します。
存在しないインデックスを指定した場合はエラーになります。
例えば、3つ要素がある配列では、インデックスは0, 1, 2の3つです。
最初が0で、最後が要素数 – 1であることは、どの配列でも絶対に当てはまります。
1 2 3 4 | <?php $colors = [ "red" , "blue" , "green" , ]; echo $colors [0]; ?> |
表示結果:red
※列挙する際にカンマで終わっていてもOKです
配列の応用1 for文
配列はfor文と組み合わせて使用されることが多いです(参考: for文とは)。
for文の初期化式の変数をインクリメントしていくと1ずつ増えてきます。
この変数とインデックスを結びつけます。
1 2 3 4 5 6 7 8 9 10 | <?php $techs [] = "php" ; $techs [] = "Java" ; $techs [] = "C#" ; $techs [] = "Python" ; for ( $i = 0; $i < count ( $techs ); $i ++) { echo $techs [ $i ]. " " ; } ?> |
表示結果:php Java C# Python
count(配列名)で配列の要素数を取得することができます。
今回のサンプルの場合は4となります。
for文の変数$iが繰り返しの度に0,1,2,3と増えていき、
4になったときに繰り返し終了となります。
その間の処理は $tech[0], $tech[1], $tech[2], $tech[3]となり、
上記のような表示結果になるわけですね。
配列の応用2 foreach文
配列の応用1で見たように、
配列はfor文とともに使われるのが典型的です。
しかし、注意すべきなのは、
(上でも述べたように)配列のインデックスが、
0から始まり、
配列の要素数より1少ない数で終わることです。
なので、for ($i = 0; $i < count($techs); $i++)のcount($techs)の部分を、
4やそれ以上の整数、ないしマイナスの整数にすると、
存在しないインデックスを指定したとしてエラーになります。
この危険を避けるため、インデックスが必要ない場合は、for文の代わりに、
foreach文を使います(参考: foreach文とは)。
ここでは、下記のサンプルを見て、そのような構文があること、
出力結果はfor文と(値だけ出力する場合は)同じであることを確かめてください。
1 2 3 4 5 6 7 8 9 10 | <?php $techs [] = "php" ; $techs [] = "Java" ; $techs [] = "C#" ; $techs [] = "Python" ; foreach ( $techs as $tech ){ echo $tech . " " ; } ?> |
表示結果:php Java C# Python