配列

トップ > PHP入門 > 配列

目次

広告

WADAX
安心の365日電話サポート付きレンタルサーバーです。
ロリポップ!
月額263円からのレンタルサーバー。マニュアルも充実しています。

配列について

変数には1つの値しか保存できませんが、配列を使用すれば複数の値を保存することができます。

配列を作成するには、以下のように書きます。

<?php

$fruit[] = "リンゴ";
$fruit[] = "ミカン";
$fruit[] = "ブドウ";

echo $fruit[0];
echo $fruit[1];
echo $fruit[2];

?>

これを実行すると、ブラウザに リンゴミカンブドウ と表示されます。

変数のときと同様に配列名の最初に $ を付け、さらに [] 内に番号をつけて区別します。値を代入するとき、[] 内に番号を指定しないと、0 から順に番号が割り振られます。(1からでは無いので注意してください。)変数の場合、同じ変数に値を代入すると以前の値が消去されましたが、配列の場合は順に保持することができます。

配列は以下のように、複数の箱が連なって一つになっているイメージです。

配列について

上の例での配列 fruit の内容を表にすると、以下のようになります。

表記 意味
$fruit[0] $fruit の0番目の値 リンゴ
$fruit[1] $fruit の1番目の値 ミカン
$fruit[2] $fruit の2番目の値 ブドウ

また、以下のように番号を指定して値を代入する事もできます。

<?php

$fruit[0] = "リンゴ";
$fruit[2] = "ミカン";
$fruit[1] = "ブドウ";

echo $fruit[0];
echo $fruit[1];
echo $fruit[2];

?>

これを実行すると、ブラウザに リンゴブドウミカン と表示されます。番号を指定したことにより、表示の順番が変わっています。

array関数

array 関数を使用すれば、配列に一度に複数の内容をセットする事ができます。

<?php

$fruit = array("リンゴ", "ミカン", "ブドウ");

echo $fruit[0];
echo $fruit[1];
echo $fruit[2];

?>

array 関数を使用した場合も、配列の番号は 0 から順に設定されます。これを実行すると、ブラウザに リンゴミカンブドウ と表示されます。

なお、array で代入するときは $fruit[] は不要なので注意してください。(個々の値を参照する場合のみ必要です。)

count関数

count 関数を使用すれば、配列の要素数を調べる事ができます。以下のようにすると、$count に配列の要素数が代入されます。

$count = count(配列名)

これを利用して、配列内の要素をすべて表示する事ができます。

<?php

$fruit = array("リンゴ", "ミカン", "ブドウ", "メロン", "グレープ");
$count = count($fruit);

for ($i = 0; $i < $count; $i++) {
  echo "$fruit[$i]<br />\n";
}

?>

$count には $fruit の要素数が入るため、この場合は 5 が代入されます。これにより for$i04 の間に実行されます。つまり echo によって $fruit[0]$fruit[1]$fruit[2]…と順に表示されるため、結果として $fruit の内容が改行区切りですべて表示されます。

foreach制御文

配列の内容をすべて表示する場合、foreach 制御文を使って書くこともできます。

<?php

$fruit = array("リンゴ", "ミカン", "ブドウ", "メロン", "グレープ");

foreach ($fruit as $name) {
  echo "$name<br />\n";
}

?>

このように書くと、配列 $fruit の内容が先頭から順に $name という変数に代入され、繰り返し処理されていきます。つまり、$fruit の内容が改行区切りですべて表示されます。

endforeachによる制御

条件分岐の際、endif を使用するとコードを読みやすく書き換えることができましたが、foreach にも同様の書き方が用意されています。具体的には

<?php

$fruit = array("リンゴ", "ミカン", "ブドウ", "メロン", "グレープ");

foreach ($fruit as $name) :
  echo "$name<br />\n";
endforeach;

?>

このように書くことができます。