今回は、phpの基本である「配列」について初心者向けにやさしく解説します。
配列とは、複数の値を格納した変数です。
大量のデータを扱いたい場合に使用し、配列の値に番号や名前などのキーを割り振ったり(連想配列)、配列の中に配列を入れたり(多次元配列)することができます。
この記事では
配列・連想配列・多次元配列の作り方や使用例などを、イラストを交えて初心者の方に向けて解説しています。
配列の基本
ここでは、配列の作り方や値の取り出し方・上書きの方法など「配列の基本的な操作」について解説します。
配列の作り方
配列を作る場合は、[](ブラケット)や array() を使用して作成します。
複数の値を格納する場合は、値と値の間を「,」(カンマ)で区切ります。
構文 ブラケットの場合
[ 値1 , 値2 , 値3... ]
構文 arrayの場合
array( 値1 , 値2 , 値3... )
それでは早速、3つの文字列型のデータ「'りんご'」「'メロン'」「'バナナ'」を配列型の変数「fruits」に格納してみましょう。
</>php<?php
$fruits = [ 'りんご' , 'メロン' , 'バナナ' ];
print_r($fruits); ?>
ポイント
ご覧の通り「りんご」「メロン」「バナナ」が順番に格納されているのがわかると思います。
ちなみに、出力結果の各値の左側の整数は「キー」と言います。
配列の値の「キー」とは、値に付ける名前のようなもので、配列はこの「キー」と「値」のペアを一つの「要素」として扱います。
「キー」を指定せずに要素を配列に入れると、要素が追加された順に自動で番号が割り振られます。
この番号を「インデックス番号」または「添字」と言います。
この番号を使うことで、特定の値を取り出したり、上書きしたり、追加することができます。
値の取り出し
配列の中から特定の値を取り出す場合は「キー」を使用します。
値の取り出しは、配列の入った変数の後に取り出したい値のインデックス番号の書いた[](ブラケット)を記述して行います。
構文
$配列名 [ インデックス番号]
この構文を使って、先ほどの3つの値の入った配列から「メロン」を取り出してみましょう。
</>php<?php
$fruits = [ 'りんご' , 'メロン' , 'バナナ' ];
print_r($fruits[1]); ?>
3つの値の中から、「メロン」のみを取り出せていますね。
ポイント
値の追加と上書き
配列の値を追加したり、配列の一部の値を上書きする場合も[](ブラケット)を使用します。
まずは値を追加する方法から見てみましょう。
値を追加するには、既に値の入った配列に[](ブラケット)を付けて、追加したい値を代入して行います。
構文
$配列名[] = 追加する値
今回は、「りんご」「メロン」「バナナ」の3つが入った配列に、さらに「ぶどう」を追加してみます。
</>php<?php
$fruits = [ 'りんご' , 'メロン' , 'バナナ' ];
print_r( $fruits );
$fruits[] = 'ぶどう';
echo '<br />';
print_r( $fruits ); ?>
最初に用意した1行目の配列に対し、2行目ではさらに「ぶどう」が追加されていますね。
追加した「ぶどう」にインデックス番号「3」が割り振られているのは、現在の「最大のインデックス番号+1」が自動で割り振られるためです。
次に、一部の配列の値を上書きする方法を見てみましょう。
構文
$配列名[既に存在するインデックス番号] = 入れ替える値
「りんご」「メロン」「バナナ」の3つが入った配列の「メロン」を「ぶどう」に上書きしてみます。
</>php<?php
$fruits = [ 'りんご' , 'メロン' , 'バナナ' ];
print_r($fruits);
$fruits[1] = 'ぶどう';
echo '<br />';
print_r($fruits); ?>
最初に用意した1行目の配列に対し、2行目では2番目にあった「メロン」が「ぶどう」に上書きされました。
既に存在していた「メロン」のインデックス番号「1」を指定して代入したことにより上書きされています。
初期化と上書き
配列は初期化することもできます。
配列の初期化は、配列の入った変数などに、空っぽの[](ブラケット)やarray() を代入して行います。
これは、新たな配列として定義する場合や、値の入った配列を一旦空っぽにする場合に行います。
構文 ブラケットの場合
$配列名 = [ ]
構文 arrayの場合
$配列名 = array( )
では早速、既に値の入った配列を初期化してみます。
</>php<?php
$fruits = [ 'りんご' , 'メロン' , 'バナナ' ];
print_r($fruits);
$fruits = [];
echo '<br />';
print_r($fruits); ?>
1列目が値を入れた配列の中身で、2列目がその配列を初期化した後の配列の中身です。
中身が空っぽになっていることが確認できますね。
また、array()や[](ブラケット)に値を入れて代入した場合は、配列の中身を上書きすることができます。
</>php<?php
$fruits = [ 'りんご' , 'メロン' , 'バナナ' ];
print_r($fruits);
$fruits = ['ぶどう','ブルーベリー'];
echo '<br />';
print_r($fruits); ?>
最初に入っていた3つの果物が、新たに代入した「ぶどう」と「ブルーベリー」に置き換わっていますね。
連想配列の基本
連想配列の作り方
連想配列とは、キーに文字列を指定した要素の入った配列です。
連想配列を作る場合はキーを指定するので、各値に「 キーの名前 => 」を付け加える必要があります。
[](ブラケット)や array() を使って作成し、複数の値を「,」(カンマ)で区切るところまでは、基本的な配列の作り方と同じです。
構文 arrayの場合
array( 'キー1' => '値1' , 'キー2' => '値2' , 'キー3' => '値3' );
構文 ブラケットの場合
[ 'キー1' => '値1' , 'キー2' => '値2' , 'キー3' => '値3' ]
それではこの構文を使って、果物に文字列の「色」や数値の「値段」をキーに指定してみましょう。
</>php<?php
$fruits = [
'赤い' => 'りんご',
300 => 'メロン',
'yellow' => 'バナナ',
];
print_r($fruits); ?>
「りんご」「メロン」「バナナ」に、「赤い」「300」「黄色」などのキーが付与されました。
値の取り出し方
連想配列から特定の値を取り出す場合も「キー」を使います。
値の取り出しは、配列の入った変数の後に取り出したい値の「キー」を書いた[](ブラケット)を記述して行います。
構文
$配列名 [ キー]
それでは、先ほどの配列から「バナナ」を取り出してみましょう。
</>php<?php
$fruits = [
'赤い' => 'りんご',
300 => 'メロン',
'yellow' => 'バナナ',
];
print_r( $fruits [ 'yellow' ]); ?>
最後の「$fruits [ 'yellow' ] 」でキーの「yellow」を指定しているので、「バナナ」が取り出されました。
値の追加と上書き
連想配列も値を追加したり、配列の一部の値を上書きすることができます。
まずは、連想配列の値の「追加」について見てみましょう。
構文
$配列名[追加するキー] = 追加する値
または、
構文
$配列名 += [ 追加するキー => 追加する値 ]
それでは、先ほどの連想配列に、キー「ピンク」の付いた値「桃」を追加してみます。
</>php<?php
$fruits = [
'赤い' => 'りんご', 300 => 'メロン', 'yellow' => 'バナナ',
];
$fruits [ 'ピンク' ] = '桃' ; print_r( $fruits ); ?>
「 $fruits [ 'ピンク' ] = '桃' 」で「キー」と「値」を指定しているので、配列の最後に追加されています。
ちなみに「$fruits += [ 'ピンク' => '桃' ];」と書いても結果は同じです。
次に、連想配列の値の上書きについて見てみましょう。
値の「追加」とほぼ同じですが、指定する「キー」が既に存在するキーである点が異なります。
構文
$配列名[既に存在するキー] = 上書きする値
キー「赤い」の値「りんご」を、「さくらんぼ」に上書きしてみます。
</>php<?php
$fruits = [
'赤い' => 'りんご',
300 => 'メロン',
'yellow' => 'バナナ',
];
$fruits[ '赤い' ] = 'さくらんぼ';
print_r( $fruits ); ?>
キー「赤い」はそのままに、値の「りんご」から「さくらんぼ」に上書きされていることが確認できますね。
多次元配列の基本
多次元配列とは、配列の中に配列の入った配列です。
[](ブラケット)やarray() で囲われた配列を、さらに[](ブラケット)やarray() で囲うことで作成できます。
また、多次元配列の階層が、2階層であれば二次元配列、3階層であれば三次元配列と表現します。
二次元配列
配列の中に配列が入った配列が、二次元配列です。
配列同士を「,」(カンマ)で区切って、 [](ブラケット)やarray() を囲むことで作ることができます。
構文 ブラケットの場合
[
[ 値1 , 値2 , 値3... ],
[ 値1 , 値2 , 値3... ],
...
]
構文 arrayの場合
array(
array( 値1 , 値2 , 値3... ),
array( 値1 , 値2 , 値3... ),
...
)
それでは、「果物」が入った配列を普通の配列に入れて二次元配列を使って作ってみましょう。
</>php<?php
$fruits = [
[ 'いちご' , 'さくらんぼ' ],
[ 'マンゴー' , 'みかん' ],
[ 'メロン' , 'スイカ' ],
[ 'ぶどう' , 'ブルーベリー' ],
[ 'マスカット' , 'メロン' ],
[ '桃' , 'すもも' ],
]; ?>
「いちご」や「さくらんぼ」などの果物が入った配列が、さらに[](ブラケット)に入っているのがわかると思います。
実は、果物を「色」ごとに分けていたので、今度はそれぞれに「色」のキーを設定してみます。
ついでに、果物の入った配列を一つ取り出してみましょう。
</>php<?php
$fruits = [
'赤色' => [ 'いちご' , 'さくらんぼ' ], '黄色' => [ 'マンゴー' , 'みかん' ], '緑色' => [ 'メロン' , 'スイカ' ], '紫色' => [ 'ぶどう' , 'ブルーベリー' ], '緑色' => [ 'マスカット' , 'メロン' ],
'ピンク' => [ '桃' , 'すもも' ],
]; print_r( $fruits[ '緑色' ] ); ?>
「緑色」のキーを指定することで「マスカット」と「メロン」を取り出すことができました。
三次元配列
配列の中に配列の入った配列が中に入った配列が三次元配列です。さて私は今、何回配列と言ったでしょう?
という冗談はさておき、
三次元配列は、二次元配列同士を「,」(カンマ)で区切って、 [](ブラケット)やarray() を囲むことで作ることができます。
それでは、先ほどの二次元配列の種類を増やして三次元配列を作成してみましょう。
</>php<?php
$fruits = [
[
'赤色' => [ 'いちご' , 'さくらんぼ' ],
'黄色' => [ 'マンゴー' , 'みかん' ],
'緑色' => [ 'メロン' , 'スイカ' ],
],
[
'紫色' => [ 'ぶどう' , 'ブルーベリー' ],
'緑色' => [ 'マスカット' , 'メロン' ],
'ピンク' => [ '桃' , 'すもも' ],
],
[
'緑色' => [ '梨' , 'ラ・フランス' ],
'黄色' => [ 'ゆず' , '柿' ],
],
[
'黄色' => [ 'レモン' , 'きんかん' ],
'赤色' => [ 'いちご' , 'りんご' ],
], ]; ?>
二次元配列が、さらに[](ブラケット)に入っていますね。
実は、こちらの配列も「季節」ごとに分けていたので、今度はそれぞれに春、夏、秋、冬の「季節」のキーを設定してみます。
ついでに、「色」の配列に入った果物の配列を一つ取り出してみましょう。
</>php<?php
$fruits=[
'春' => [
'赤色' => [ 'いちご' , 'さくらんぼ' ],
'黄色' => [ 'マンゴー' , 'みかん' ],
'緑色' => [ 'メロン' , 'スイカ' ],
],
'夏' => [
'紫色' => [ 'ぶどう' , 'ブルーベリー' ],
'緑色' => [ 'マスカット' , 'メロン' ],
'ピンク' => [ '桃' , 'すもも' ],
],
'秋' => [
'緑色' => [ '梨' , 'ラ・フランス' ],
'黄色' => [ 'ゆず' , '柿' ],
],
'冬' => [
'黄色' => [ 'レモン' , 'きんかん' ],
'赤色' => [ 'いちご' , 'りんご' ],
],
];
print_r($fruits[ '秋' ][ '緑色' ]); ?>
$fruits[ '秋' ][ '緑色' ]とすることで、「秋」の中の「緑色」の配列の値を取り出すことができました。
さて、ここで問題です。
「ラ・フランス」だけを取り出すにはどうすれば良いでしょうか?
、、、そうです。$fruits[ '秋' ][ '緑色' ]にさらに インデックス番号をつければ良いのです。
先ほどの最後のコードを以下のコードに書き換えてもう一度出力してみましょう。
</>phpprint_r($fruits[ '秋' ][ '緑色' ][ 1 ]);
「秋」の中の「緑色」の配列のインデックス番号「1」の値を取り出すことができました。
このように、多次元配列の中にある値は、[](ブラケット)を[][][]...のように連ねて使用することで指定することができます。
最後に
いかがでしたでしょうか、今回はphpの基本である「配列」について解説しました。
もっと詳しく学習したい方は、下の記事一覧から他の記事もご覧下さい。
php
PHP言語に関する基礎的な構文やデータ型や関数など、詳細な解説やコード例を提供しています。
続きを見る