【PHP基礎】変数と配列②
前回の記事で説明した通り、単純変数(スカラー型変数)は、1つしか値が入らない変数です。
これに対して、複数の値を入れるためには、複合型変数を用います。
今回は、複合型変数の一種、配列を紹介します。
配列
配列では、複数の値を一まとめに管理します。
定義するときは、array()の()の中、または[]の中に、
値をカンマ区切りで列挙します。
また、1つずつ値を追加していく方法もあります。
その際は、配列名[] = 値とします。
配列の定義例
// 方法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であることは、どの配列でも絶対に当てはまります。
<?php $colors = ["red", "blue", "green", ]; echo $colors[0]; ?>
表示結果:red
※列挙する際にカンマで終わっていてもOKです
配列の応用1 for文
配列はfor文と組み合わせて使用されることが多いです(参考: for文とは)。
for文の初期化式の変数をインクリメントしていくと1ずつ増えてきます。
この変数とインデックスを結びつけます。
<?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文と(値だけ出力する場合は)同じであることを確かめてください。
<?php $techs[] = "php"; $techs[] = "Java"; $techs[] = "C#"; $techs[] = "Python"; foreach($techs as $tech){ echo $tech." "; } ?>
表示結果:php Java C# Python