PHPでプログラミングを行う上で、複数の値をまとめて管理できる「配列」は、頻繁に利用されるデータ構造の一つです。
しかし、この配列を正しく「初期化」する作法を疎かにすると、予期せぬエラーや警告(Warning/Notice)に悩まされる原因となりかねません。
そこでこの記事では、PHPの配列の基本的な初期化方法から、連想配列・多次元配列の扱い、そして現代的な書き方まで、豊富なコード例と共に徹底的に解説していきます。
【本記事の信頼性】
- 執筆者は元エンジニア
- 大手プログラミングスクールのWebディレクター兼ライターを経験
- 自らも地元密着型のプログラミングスクールを運営
受講生から評判の良いプログラミングスクール
スクール |
特徴 |
受講料金 |
大手比較サイトで4年連続人気NO.1!受講生からの評判も非常に高く、Web系のエンジニアを目指すならRUNTEQ一択。 | 550,000円(給付金適用あり) | |
月単価80万円以上の現役エンジニア講師による指導!一度入会すればサポートは半永久的。 | 498,000円 | |
格安で質の高いWeb制作スキルを習得したい人におすすめ!業界最安級の料金でありながら、コミュニティやサポートが充実。 | 129,800円~ | |
完全無料でプログラミングが学べる貴重なスクール!最短1ヶ月で卒業可能。ゼロスク運営会社への就職もできる。 | 無料 | |
長期間に渡って学習し、希少人材を目指す人に最適なスクール!受講料は高いものの、高収入を得られる人材を目指せる。 | 96~132万円 |
なぜ初期化は重要?初期化しないとどうなるか
そもそも、なぜ配列を使う前に「初期化」という一手間が必要なのでしょうか。
それは、「これからこの変数を配列として使います」とPHPに明示的に宣言することで、コードの安全性と可読性を高めるためです。
もし初期化をせずに、いきなり変数に配列の要素を追加しようとすると、PHPの環境設定によっては警告(Notice)が発生することがあります。
サンプルコード
<?php
// 配列を初期化せずに、いきなり値を追加しようとする
$items[] = 'apple';
var_dump($items);
?>
このコードは多くの場合動作しますが、エラーレポートのレベルによっては、以下のようなメッセージが表示される可能性があります。
【表示される可能性のある警告】
Notice: Undefined variable: items in /path/to/your/script.php on line 3
これは「変数 items
は定義されていませんよ」というPHPからの親切なメッセージです。
初期化は、このような意図しない警告を防ぎ、他の開発者がコードを読んだ時にも「ここから配列の処理が始まるのだな」と一目で理解できるようにするための、プログラマとしての重要なマナーなのです。
PHPで配列を初期化する際は [] を使うのが基本
まず結論からお伝えすると、PHPでの配列の初期化は角括弧 []
(ブラケット) を使うのが一般的であり、強く推奨されるベストプラクティスです。
この書き方は、PHP 5.4から導入された短縮構文で、それ以前のarray()
という書き方に比べて非常に簡潔です。
- 空の配列を初期化する場合:
$array = [];
- 最初から値を持つ配列を初期化する場合:
$array = [1, 2, 3];
特別な理由(例えば、PHP 5.3以前の非常に古い環境を扱うなど)がない限り、このモダンで読みやすい[]
を使った記法に統一することをおすすめします。
PHPでの基本的な配列の初期化方法
それでは、具体的な初期化の方法を3つの基本パターンに分けて見ていきましょう。
空の配列を初期化する
最も基本となるのが、中身が空の配列を最初に用意する方法です。
ループ処理の中で条件に一致したものだけを配列に追加していく、といった動的な処理を行う際によく使われます。
サンプルコード
<?php
// 空の配列として変数を初期化
$fruits = [];
// 条件に応じて値を追加していく
$fruits[] = 'apple';
$fruits[] = 'banana';
var_dump($fruits);
?>
実行結果
array(2) {
[0]=>
string(5) "apple"
[1]=>
string(6) "banana"
}
ソースコードの解説
最初に$fruits = [];
と記述することで、「$fruits
という変数は配列ですよ」と宣言しています。
これにより、以降の行で$fruits[] = '...';
という形で安全に要素を追加していくことが可能になります。
もし最初の初期化がないと、前述の通り未定義変数へのアクセスとして警告が出る原因になりかねません。
値を持つ配列(インデックス配列)を初期化する
あらかじめ配列の中に入れる値が決まっている場合は、初期化と同時に値を設定することができます。
これは「インデックス配列」と呼ばれ、各要素には自動的に0
から始まる番号(インデックス)が割り振られます。
サンプルコード
<?php
// 初期化と同時に値を設定
$numbers = [10, 20, 30];
$colors = ['red', 'green', 'blue'];
var_dump($numbers);
echo "<br>";
var_dump($colors);
echo "<br>";
// 2番目の要素にアクセス (インデックスは0から始まるので'1'を指定)
echo $colors[1];
?>
実行結果
array(3) {
[0]=>
int(10)
[1]=>
int(20)
[2]=>
int(30)
}
<br>
array(3) {
[0]=>
string(3) "red"
[1]=>
string(5) "green"
[2]=>
string(4) "blue"
}
<br>
green
ソースコードの解説
[]
の中にカンマ区切りで値を入れるだけで、簡単にインデックス配列を作成できます。
var_dump()
の結果を見ると、キー(インデックス)が[0]
, [1]
, [2]
と自動で設定されているのが分かります。
値を取り出す際は、$変数名[インデックス番号]
という形式でアクセスします。
値を持つ連想配列を初期化する
インデックス番号の代わりに、自分で決めた文字列などのキーと値をペアで管理したい場合は「連想配列」を使います。
ユーザー情報など、各データが何を表しているかを明確にしたい場合に非常に便利です。
サンプルコード
<?php
// キーと値を指定して連想配列を初期化
$user = [
'name' => 'Yamada',
'age' => 30,
'city' => 'Tokyo'
];
var_dump($user);
echo "<br>";
// 'name'キーを使って値にアクセス
echo $user['name'];
?>
実行結果
array(3) {
["name"]=>
string(6) "Yamada"
["age"]=>
int(30)
["city"]=>
string(5) "Tokyo"
}
<br>
Yamada
ソースコードの解説
連想配列は、'キー' => '値'
という形式で記述します。
=>
(ハッシュロケット)を使い、キーと値を紐付けます。この方法を使えば、$user[0]
のような番号ではなく、$user['name']
のように意味のあるキー名でデータにアクセスできるため、コードの可読性が格段に向上するでしょう。
【応用】PHPでの多次元配列の初期化
さらに応用として、配列の中に配列を入れる「多次元配列」も同様に初期化できます。複数のユーザー情報をまとめて管理するなど、より複雑なデータ構造を表現する際に役立ちます。
サンプルコード
<?php
// 多次元配列を初期化
$users = [
[
'id' => 1,
'name' => 'Yamada',
'age' => 30
],
[
'id' => 2,
'name' => 'Sato',
'age' => 25
],
[
'id' => 3,
'name' => 'Suzuki',
'age' => 35
]
];
// 2番目のユーザーの名前('Sato')にアクセス
echo $users[1]['name'];
?>
実行結果
Sato
ソースコードの解説
これは、インデックス配列の中に連想配列が入っている構造です。$users
という大きな配列の中に、3人分のユーザー情報(それぞれが連想配列)が格納されています。
値にアクセスするには、まず外側の配列のインデックスを指定し(例: $users[1]
で2番目のユーザー情報を取得)、続けて内側の連想配列のキーを指定します。(例: ['name']
で名前を取得)
このように[]
を繋げることで、深い階層のデータにも簡単にアクセス可能です。
まとめ
以上、PHPにおける配列の初期化方法について、その重要性から具体的な書き方までを詳しく解説しました。
なお、PHPを体系的に学んだり、PHPのスキルを高めたりするためには、プログラミングスクールを利用するのも有効です。
細かな疑問がすぐに解決するだけでなく、現役エンジニアが「質の高いポートフォリオ」を作成するための手助けをしてくれたり、エンジニア就職・転職のコツを教えてくれたりするなど、様々なメリットがありますので、独学に疲れた方は検討してみてはいかがでしょうか。