今回はPHPの配列についてです。ループ処理などでも多用される機能なのでしっかり理解はしておきたいです。

PHPの配列

3年以上前に更新されました。情報が古い可能性があります。
更新日 : 2020年02月06日

今回はPHPの配列についてです。ループ処理などでも多用される機能なのでしっかり理解はしておきたいです。

PHPでの配列の使い方

PHPでは配列の種類が2種類存在します。コードを見ながら説明していきます。

通常の配列

まずはarrayという関数を使用していく方法です。関数については別の記事で書いていきます。

<?php
// array関数を利用した配列の宣言と代入する方法
$arr = array("犬", "猿", "雉");
//最初に何も代入したくない場合はカッコのみでもOK
$arr2 = array();

// 省略形 $arrと同じデータになる
$arr3 = ["犬", "猿", "雉"];
// 省略形 $arr2と同じデータになる
$arr4 = [];

echo $arr[0] . $arr[1] . $arr[2];
echo "<br>";

$arr[2] = "猫";

echo $arr[2];
echo "<br>";

// 配列の宣言と代入を同時に行う方法
$arr5[0] = "ももから生まれた";
$arr5[1] = "ももたろう";
echo $arr5[0] . $arr5[1];
?>

array()または[]を利用するパターン

まずは前半部分です。array関数という物を利用してarray(入れたい値1, 入れたい値2, ...)としていくと配列の宣言と代入が同時に行われます。

これで変数$arrには3つのデータが連なって格納されたことになります。

格納されたデータを利用したい場合は$arr[数字]とすることで数字の場所に格納したデータを利用することができます。数字が0から始まることに注意してください!
今回は3つとも文字列を代入したため、echo $arr[0] . $arr[1] . $arr[2] 文字列結合演算子を利用して出力しています。

格納されたデータを変更したい場合は$arr[2] = "猫" このように変更したい場所のデータに代入演算子で代入します。今回は"雉"から"猫"にデータを代入して変更しています。

また、省略形として[]も利用可能です。単純にarray()の省略形なだけです。慣れるとこちらのほうがよく利用されます。

$arr5[0]のようなパターン

PHPの変数では、PHPは宣言と代入を同時に行えることを学びました。配列でも同様のことが可能です。代入処理を入れるだけで宣言も同時に行われたことになります。今回は変数$arr5に対し、宣言と代入を同時に行っています。

データを書き換えたい場合は1つ目の方法と同じです。

このように配列は変数名に[数字]かぎかっこを利用して利用することができます。数字が0から始まることにだけ注意してください。これが配列での記述ルールです。

連想配列

PHPには連想配列という配列も存在します。連想配列とは、配列の$変数名[数字]$変数名[文字列]として利用するものです。配列内のデータを番号で振り分けていたところを、好きな名前をつけて利用することができる機能です。

これによって0番に何が入っている、1番には…ということを考える必要がなくなります。コード例を使用して具体的に説明していきましょう。

<?php
// 連想配列の宣言と代入
$arr = array("主人公" => "ももたろう", "家来1" => "犬", "家来2" => "猿", "家来3" => "雉");
// 先程の配列と同様に省略形もある
$arr2 = ["主人公" => "ももたろう", "家来1" => "犬", "家来2" => "猿", "家来3" => "雉"];

echo "主人公は" . $arr["主人公"] . "、家来1は" . $arr["家来1"] . "です。";
echo "<br>";

$arr3["主人公"] = "ももたろう";
$arr3["家来"] = "犬と猿と雉";

echo $arr3["主人公"] . "の家来は" . $arr3["家来"] . "です。";
?>

$arr$arr2のパターン

配列のときには番号が自動的にひも付きましたが、連想配列の場合には自分で名前をつけなければいけません。そのため通常の配列と使い方が少し異なります。array(キーとなる名前文字列 => 入れたい値, キーとなる名前文字列2 => 入れたい値2,...)と記述します。

先程の通常の配列で使用していた数字や、連想配列の格納場所を示す部分をキーと言います。通常の配列では自動的に数字のキーがくっつくので不要でしたが、連想配列ではキーをきちんと指定して代入していきます。必ずキー => 値となるようにします。=>を使用して紐付けていきます。値を英語でvalueと呼ぶので、連想配列のような形式をキーバリュー形式と言ったりもします。

省略系も同様に利用可能です。

$arr3のパターン

2つ目の使い方は通常の配列とそれほど変わりません。キーとなる部分を文字列で利用してあげましょう。値を代入し直すときも通常の配列と変わりありません。

このコードの実行結果は以下のようになります。

連想配列実行結果
連想配列実行結果

多次元配列について

PHPの配列、連想配列について学びました。応用編として、多次元配列についても説明していきたいと思います。配列、連想配列でお腹いっぱいの方は上の連想配列までを復習、理解してください。

多次元配列という文字を見ると難しそうに見えるかもしれませんが、言うほど難しく無いかと思います。ただ、しっかり先程の配列、連想配列が理解できてからが望ましいです。

多次元配列とは

多次元配列は簡単に言うと、配列の中に配列を入れることです。

以下のコードで見てみましょう。

<?php
// 配列を利用した多次元配列
$arr = [
	["0の0", "0の1", "0の2"],
	["1の0", "1の1"],
	["2の0"]
];

echo $arr[0][1];
echo "<br>";

// 連想配列を利用した多次元配列
$arr2 = [
	"主人公" => "ももたろう",
	"家来たち" => ["1番目" => "犬", "2番目" => "猿", "3番目" => "雉"]
];

echo "主人公は" . $arr2["主人公"] . "で、家来3番目は" . $arr2["家来たち"]["3番目"] . "です。";
?>

まずは通常の配列を利用した多次元配列です。

配列の中に配列を格納する時点でコードが読みづらくなるため、このように改行やスペースを利用して可読性を上げることが多いです。このようにスペースを使用して段落のようにすることをインデントと呼びますが、別の記事で詳しく説明していきます。

最初の変数$arrにはarray()の省略形である[]が利用されていますが、その0番目のデータに更にarray()を使用して多次元配列を実現しています。

利用する際には$arr[0][1]とすることによって、全体の配列0番目の中の、配列1番目を利用できます。もちろん配列の中の配列の中の配列…も可能ですが、2段階までぐらいが実用的に使用されるレベルです。

次に連想配列を利用した多次元配列です。

$arr2 = [
	"主人公" => "ももたろう",
	"家来たち" => ["1番目" => "犬", "2番目" => "猿", "3番目" => "雉"]
];

この部分ですね。
$arr2["主人公"]には通常のデータ"ももたろう"が格納されています。そして$arr2["家来たち"]にはさらに連想配列["1番目" => "犬", "2番目" => "猿", "3番目" => "雉"]が格納されています。

利用の方法は通常の配列と同様です。$arr2["家来たち"]["3番目"] とすることで今回は"雉"というデータが利用できます。

今回のこのコードの結果は以下のようになります。

多次元配列コード実行結果
多次元配列コード実行結果

まとめ

PHPの配列、連想配列について解説していきました。

特に多次元配列については少し複雑ですが、配列・連想配列の基本が理解できれば応用として理解できるかと思います。

多次元配列はそもそもこのコード例のように少し可読性が悪くなるので、使用する際には可読性は意識してコードに反映しましょう。