| 空白 | 型名 | 説明 |
|---|---|---|
| array | 配列型 | array関数により指定された配列 |
| object | オブジェクト型 | new命令によりオブジェクトのインスタンスを変数に作成 |
スカラー型とは、常に一つの値を保持している変数のことでしたが、一方でPHPには、複数の値を格納する変数を扱うことができます。このような変数のことを「非スカラー変数」と呼びます。この非スカラー変数にも様々な種類がありますが、その代表的な非スカラー変数として「配列」があります。
なお、オブジェクト型のオブジェクトとは、「オブジェクト指向」という概念に基づいたプログラミング手法のことですが、ここでは配列を重視して解説していきます。
配列は変数名の最後に「[]角かっこ」を付けると配列として機能します。また変数と同じで、値を代入するとデータの型を考えずに使用することができます。
<?php
$animal[] = "牛";
$animal[] = "馬";
$animal[] = "鹿";
echo "$animal[ 0 ]<br />¥n";
echo "$animal[ 1 ]<br />¥n";
echo "$animal[ 2 ]<br />¥n";
?>
牛 馬 鹿
前述のスクリプトでは、インデックスに値を指定せずに、 "牛"などの値だけを代入しています。また、インデックスの値を指定していないので、自動的に「牛」、「馬」、「鹿」と表示されています。
<?php
$animal[ 2 ] = "牛";
$animal[ 1 ] = "馬";
$animal[ 3 ] = "鹿";
echo "$animal[ 1 ]<br />¥n";
echo "$animal[ 2 ]<br />¥n";
echo "$animal[ 3 ]<br />¥n";
?>
馬 牛 鹿
前述のスクリプトでは、インデックスを指定して値を代入しています。インデックスで指定した順番に表示されていることがわかります。
配列のインデックスに続いた数値が割り当てられている時には、ループ処理を使用して、配列の値を出力することができます。
このループ処理により、より少ないコードを記述することが可能になります。
<?php
$animal = array( "牛", "馬", "鹿", "犬", "猫" );
$number = count( $animal );
for( $i = 0; $i < $number; $i++ ) {
echo "$animal[ $i ]<br />¥n";
}
?>
牛 馬 鹿 犬 猫
前述のスクリプトでは、配列$animalのインデックスを0から割り当てているので、出力する際に何度もechoを記述することがなく、ループ(繰り返し)の処理によって出力されています。また、count関数により配列$animalの要素、今回の場合は五つを取得しつつ、forの条件(要素が五つなので五回繰り返す)でループがなされています。「$i++」はループ処理が実行されるたびに、「$i = 0;」へ1がプラスされるという意味です。この「$i++」によってループされるたびに0回目は「牛」だよー、1回目は「馬」だよー、2回目は「鹿」だよー、3回目は「犬」だよー、4回目は「猫」だよーと教えています。
上記のスクリプトの「$i = 0;」の値を「$i = 2;」とした場合は、「0」が「牛」、「1」が「馬」、「2」が「鹿」、「3」が「犬」、「4」が「猫」となっているので、実行結果は「鹿」、「犬」、「猫」となります。