配列について
配列とは
変数では1つの変数に1つの値しか保持(代入)する事ができませんが、配列を使えば1つの変数に複数の値を保持する事ができます。
変数が1つの値をしまってある(保持している)箱だとしたら、配列は1つの箱に仕切りをつけて、複数の値をしまっておくものだと考えるといいかもしれません。仕切られた部屋ごとにそれぞれキー(添え字)と呼ばれるインデックスが付けられており、これで値を参照したりします。配列の間仕切りしてある1つ1つの部屋(空間)のことを要素と呼んだりします。
キー(添え字)には数値や文字列が指定できますが、ここでは数値による指定から見ていきたいと思います。
配列の作成方法
配列を作成する方法はいくつかありますが、まず紹介しておきたいのは角括弧「 [] 」でキーを指定する方法です。
$配列[ キー ] = 値;
という形式で指定します。実際に「 $arr 」という配列を作成してみます。
<?php
$arr[0] = "0番目の値";
$arr[1] = "1番目の値";
$arr[2] = "2番目の値";
?>
配列を作成するだけなら上記のようにしていくだけです。
作成した配列のうち、1番目の要素を参照して出力したい場合にはprint()等を使用して以下のようにします。
<?php
$arr[0] = "0番目の値";
$arr[1] = "1番目の値";
$arr[2] = "2番目の値";
print $arr[2];
?>
出力結果
配列の1要素を参照してみましたが、この1要素は普通の変数と同様に扱えますので、他の変数への代入もできます。
$value = $arr[1];
などとすると、キー1の値を$valueという変数に代入します。
キー(添え字)の重複
配列は普通の変数と同様に扱われますので、キー(添え字)が重複した場合には値が上書きされます。
<?php
$animal[0] = "犬";
$animal[0] = "猫"; //キーが重複するので値は上書きされる
print $animal[0];
?>
出力結果
キー(添え字)の省略
配列へ値を代入する時にはキー(添え字)を省略した形式があります。
PHPではキーを省略した場合、キーは「0」という整数値から始まり、1ずつ増加していきます。
<?php
$arr[] = "0番目の値";
$arr[] = "1番目の値";
$arr[] = "2番目の値";
?>
この例では上記のサンプルと同じ配列を作成する事になります。
注意したいのは自動的にキーが割り振られるため、目的の値が何番目なのかを常に意識しておかなければならない事と、キーは「1」から振られるのではなく「0」から振られるのだという事です。
つまり、上記の例では配列の要素数は3つですが、キーは「2」までしかありません。これはキーが「0」から割り振られているためです。
キー(添え字)の変更
では、意図的にキーを変更したい場合の方法を紹介します。例えばキーを「0」からでなく、「1」から始めたい場合などはこのようにします。
<?php
$arr[1] = "1番目の値";
$arr[] = "2番目の値";
$arr[] = "3番目の値";
?>
キーを省略して新規の要素を追加した場合、追加されるキーは現在使用されている「キーの最大値+1」となります。これを利用したのが上記の例で、最初の $arr[] のキーを「1」と指定したために、1から順にキーが割り振られます。
つまり、上記の例では配列 $arr[0] は存在せず、 $arr[1] から順番にキーが割り振られていきます。
具体的なサンプルを紹介しておきます。
<?php
$fruit[0] = "りんご";
$fruit[] = "みかん"; //キーは1となる
$fruit[50] = "いちご";
$fruit[100] = "メロン";
$fruit[] = "すいか"; //キーは101となる
echo '$fruit[1]の値は'.$fruit[1]."<br>\n";
echo '$fruit[101]の値は'.$fruit[101];
?>
出力結果
$fruit[101]の値はすいか
負の値のキー
キーに負の値を設定する事もできます。その場合、新規要素のキーは「最大値+1」ではなく「 0 」になりますので注意してください。但し、これはPHP4.3.0での変更であり、それ以前のバージョンでは正の値のキーと同様に新規要素は「最大値+1」のキーを持つ事になります。
<?php
$a[-5] = "-5番目";
$a[] = "0番目"; //キーは0となる
echo $a[0];
?>
出力結果
配列の要素数
キーを意図的に変更した場合の配列の要素数について少し注意しておきます。
<?php
$arr[1] = "1番目の値";
$arr[10] = "10番目の値";
$arr[20] = "20番目の値";
?>
として配列を作成した場合の要素数はいくつになるでしょう。20になるのかというとそうではなく、この場合の要素数は3になります。
キーへの論理型・ヌル型の指定
配列のキーに論理型の「 TRUE 」を指定した場合は整数値の「 1 」が、「 FALSE 」を指定した場合は整数値の「 0 」がキーとして解釈されます。「 NULL 」を指定した場合は空の文字列「 "" 」として解釈されます。空文字「 "" 」をキーとして指定した場合は、「空文字」というキーを保持する事となり、空の角括弧「 [] 」を指定した場合の動作(キーの最大値+1が適用される)と同様ではありませんので注意して下さい。
<?php
//この場合TRUE・FALSE・NULLは定数なのでキーに指定する際クォートしない
$arr[FALSE] = "論理型:FALSE";
$arr[TRUE] = "論理型:TRUE";
$arr[NULL] = "ヌル型:NULL";
echo $arr[0]."<br>\n"; //$arr[FALSE]の値が出力される
echo $arr[""]."<br>\n"; //$arr[NULL]の値が出力される
echo $arr[TRUE]; //定数そのものの指定も可能
?>
出力結果
ヌル型:NULL
論理型:TRUE


