Developer

【PHP基礎】変数と配列②
2020.10.01
Lv1

【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

PHP基礎 連載目次リンク

PHP基礎 連載目次