PHPの変数に複数の値を持して定義したい、そんな場面で使えるのが配列型です。配列型は文字列や数値などあらゆる型を1つの変数に保持することができます。
配列を説明する前に基本的な変数の復習をします。
プログラムでは変数を定義して、その変数に値をいれます。 PHPは型定義をせずに直接、文字などの値を代入することができますね。
$color = '赤色';
この例だと$colorという変数に文字列を代入しています。では他にも値を追加したい場合はどうすればよいでしょうか?「変数を色の数だけ用意する」というのも1つの解かもしれませんが、WEBサイトなどでユーザーが選択した複数の項目を入れようとすると無理がでてきます。そんな時値をリスト形式で持つことができるのが配列です。 配列は変数の型の一種で複数の値をリスト形式で持たせることができます。
「複数の値をリスト形式で持たせることができる」と説明しましたが、ここで配列の数え方について説明します。 通常の日常生活において数を数える時は1,2,3...と1から数え始めますが、プログラムの世界では0,1,2...と0からの連番で数え始めることが多いのです。
そのため配列を定義しvar_dumpで出力すると次のように暗黙的に0から連番が振られていることが確認できます。
$colors = [
'赤色',
'青色',
'緑色'
];
var_dump($colors);
array(3) {
[0]=>
string(6) "赤色"
[1]=>
string(6) "青色"
[2]=>
string(6) "緑色"
}
この例のように数字が振られている配列を「添字配列」と呼びます。
プログラムによって配列定義の実装方法は変化しますが、PHPで配列を定義するには次の方法があります。
基本的には前者の[]
の書き方で記述するようにしましょう。
何も入っていない空配列の定義方法です、後から値を追加したりすることができます。
$array = [];
配列を初期化するときに一緒に文字列等の値も代入することが可能です。
$array = [
'赤色', // 0番目
'青色', // 1番目
'緑色' // 2番目
];
配列の値を取り出す場合は配列の番号を指定してあげることで取得することができます。
$array = [
'赤色', // 0番目
'青色', // 1番目
'緑色' // 2番目
];
echo $array[0]; // 赤色
echo $array[1]; // 青色
echo $array[2]; // 緑色
多次元配列とは配列の中に配列が定義されている配列のことを示します。 基本的には配列と同じなので用語だけ覚えておきましょう。
// 例1
$array = [
[]
[]
];
// 例2
$array = [
['赤色','朱色'],
['青色'],
['緑色']
];
配列には値を設定すると0からの連番(キー)が振られることを説明しましたが、PHPの配列には配列のキーに文字列を指定し名前をつけることができます。
$array = [
'red' => '赤色',
'blue' => '青色',
'green' => '緑色'
];
echo $array['red']; // 出力結果:赤色
echo $array['blue']; // 出力結果:青色
echo $array['green']; // 出力結果:緑色
配列のキーに名前をつけることによって値呼び出したり管理するのが非常に楽になります。
配列を定義したあとに値を追加したい場合は$変数名[] = $値
の形式で値を追加することができます。
キーも連番続きで設定されるので、追加した分だけ数も増えます。
$array = [
'赤色',
'青色',
'緑色'
];
$array[] = '紫色';
var_dump($array);
array(4) {
[0]=>
string(6) "赤色"
[1]=>
string(6) "青色"
[2]=>
string(6) "緑色"
[3]=>
string(6) "紫色"
}
連想配列に値を追加したい場合は$変数名['キー'] = $値
の形式で値を追加することができます。
同じキーが存在した場合は上書き処理されます。
$array = [
'red' => '赤色',
'blue' => '青色',
'green' => '緑色'
];
$array['purple'] = '紫色';
$array['green'] = '青緑色';
var_dump($array);
array(4) {
["red"]=>
string(6) "赤色"
["blue"]=>
string(6) "青色"
["green"]=>
string(9) "青緑色"
["purple"]=>
string(6) "紫色"
}
配列の中身を全て出力する場合、キーの指定でなくforeachを使って中身を処理します。
$array = [
'red' => '赤色',
'blue' => '青色',
'green' => '緑色'
];
foreach ($array as $key => $value) {
echo "{$key}:{$value}\r\n";
}
red:赤色
blue:青色
green:緑色
foreachを使うと値1つ1つの処理ができるようになります。開発では会員の配列から1人ずつメールを配信したりカートの合計金額を出したりなど処理することができます。
配列を使うことで複数の値を1つの変数で扱えるようになります。連想配列を使うことで会員や商品情報を管理することもできるようになりプログラミングできる幅をぐっと広げることができます。PHPの基本になりますので覚えてみてください。