PHPの連想配列の初期化とは、キーと値をセットにして配列を作成することです。
通常の配列では、0、1、2 のような数値キーで値を管理します。
一方、連想配列では、name、age、email のような意味のある文字列キーを使って値を管理できます。
たとえば、ユーザー情報を連想配列で初期化すると、次のようになります。
$user = [
'name' => '田中太郎',
'age' => 30,
'email' => 'tanaka@example.com',
];
この場合、name というキーには 田中太郎、age というキーには 30、email というキーには tanaka@example.com が対応しています。
値を取り出すときは、キーを指定します。
echo $user['name']; // 田中太郎
echo $user['age']; // 30
echo $user['email']; // tanaka@example.com
PHPでは、通常の配列も連想配列も同じ array 型として扱われます。
そのため、連想配列の基本的な書き方を覚えておくと、フォーム処理、データベースの取得結果、APIレスポンス、設定ファイル、WordPressの引数指定など、さまざまな場面で役立ちます。
PHPの連想配列を初期化する基本構文
PHPで連想配列を初期化する基本構文は、次の通りです。
$配列名 = [
'キー' => 値,
'キー' => 値,
'キー' => 値,
];
=> は、キーと値を対応させるための記号です。
'キー' => 値
たとえば、商品情報を連想配列で初期化する場合は、次のように書きます。
$product = [
'name' => 'ノートPC',
'price' => 120000,
'stock' => 5,
];
この配列では、以下のような対応関係になっています。
'name' => 'ノートPC'
'price' => 120000
'stock' => 5
値を取り出すときは、配列名のあとにキーを指定します。
echo $product['name']; // ノートPC
echo $product['price']; // 120000
echo $product['stock']; // 5
[] を使って連想配列を初期化する
現在よく使われる書き方
現在のPHPでは、連想配列の初期化には [] を使う書き方が一般的です。
$user = [
'id' => 1,
'name' => '佐藤花子',
'email' => 'sato@example.com',
'is_active' => true,
];
このように、配列全体を [ と ] で囲み、その中にキーと値を並べます。
複数行で書くと、キーと値の対応関係が見やすくなります。
$user = [
'id' => 1,
'name' => '佐藤花子',
'email' => 'sato@example.com',
'is_active' => true,
];
実務では、1行で書くこともできます。
$user = ['name' => '佐藤花子', 'age' => 25];
ただし、項目数が多い場合は、複数行で書いた方が読みやすくなります。
[] 構文を使うメリット
[] 構文を使うメリットは、コードが短く、読みやすいことです。
$user = [
'name' => '田中太郎',
'age' => 30,
];
後述する array() と比べると、記述量が少なくなります。
$user = array(
'name' => '田中太郎',
'age' => 30,
);
現在のPHPコードでは、特別な理由がない限り、[] を使って連想配列を初期化するのがおすすめです。
array() を使って連想配列を初期化する
古いコードで見かける書き方
PHPでは、array() を使って連想配列を初期化することもできます。
$user = array(
'name' => '田中太郎',
'age' => 30,
'email' => 'tanaka@example.com',
);
これは、次の [] を使った書き方と同じ意味です。
$user = [
'name' => '田中太郎',
'age' => 30,
'email' => 'tanaka@example.com',
];
古いPHPのコードや、昔から運用されているシステムでは、array() を使った書き方を見かけることがあります。
新しく書くなら [] がおすすめ
新しくPHPコードを書く場合は、基本的に [] を使うとよいでしょう。
$config = [
'debug' => true,
'timezone' => 'Asia/Tokyo',
];
array() が間違いというわけではありませんが、現在は [] の方が簡潔で、モダンな書き方としてよく使われます。
空の連想配列を初期化する
空配列を作る方法
最初は中身を入れず、あとから値を追加したい場合は、空の配列を作ります。
$user = [];
array() を使う場合は、次のように書けます。
$user = array();
現在は、空配列の場合も [] を使うのが一般的です。
あとからキーと値を追加する
空の連想配列を作ったあと、キーを指定して値を追加できます。
$user = [];
$user['name'] = '山田太郎';
$user['age'] = 28;
$user['email'] = 'yamada@example.com';
この処理のあと、$user は次のような連想配列になります。
$user = [
'name' => '山田太郎',
'age' => 28,
'email' => 'yamada@example.com',
];
最初から値が決まっている場合は、まとめて初期化した方が読みやすいです。
$user = [
'name' => '山田太郎',
'age' => 28,
'email' => 'yamada@example.com',
];
一方、条件によって追加する値が変わる場合は、空配列を作ってから値を入れていく書き方が便利です。
連想配列のキーと値の考え方
左側がキー、右側が値
連想配列では、=> の左側がキー、右側が値です。
'username' => 'taro'
この場合、username がキー、taro が値です。
もう少し具体的に見ると、次のようになります。
$article = [
'title' => 'PHPの基本',
'author' => '鈴木一郎',
'published' => true,
'views' => 1500,
];
この配列では、以下のような対応関係になっています。
'title' => 'PHPの基本'
'author' => '鈴木一郎'
'published' => true
'views' => 1500
値を取り出すときは、キーを指定します。
echo $article['title']; // PHPの基本
echo $article['author']; // 鈴木一郎
echo $article['views']; // 1500
値にはさまざまな型を入れられる
連想配列の値には、文字列だけでなく、数値、真偽値、null、配列などを入れられます。
$user = [
'id' => 1,
'name' => '佐藤太郎',
'score' => 92.5,
'is_admin' => false,
'deleted_at' => null,
];
それぞれの値の型は、次のようなイメージです。
'id' => 整数
'name' => 文字列
'score' => 小数
'is_admin' => 真偽値
'deleted_at' => null
真偽値の true を echo で出力すると、1 と表示されます。
$article = [
'published' => true,
];
echo $article['published']; // 1
型を確認したい場合は、var_dump() を使うとわかりやすいです。
var_dump($article['published']); // bool(true)
文字列キーはクォートで囲む
正しい書き方
連想配列の文字列キーは、基本的にクォートで囲みます。
$user = [
'name' => '田中太郎',
'email' => 'tanaka@example.com',
];
シングルクォートでもダブルクォートでも書けます。
$user = [
"name" => "田中太郎",
"email" => "tanaka@example.com",
];
実務では、単純な文字列キーにはシングルクォートを使うことが多いです。
クォートなしのキーは避ける
次のように、文字列キーをクォートなしで書くのは避けましょう。
$user = [
name => '田中太郎',
];
この場合、PHPは name を文字列ではなく、定数として解釈しようとします。
古いPHPでは、未定義定数が文字列として扱われる場合もありましたが、現在のPHPではエラーの原因になります。
そのため、文字列キーは必ずクォートで囲むのが基本です。
正しくは、次のように書きます。
$user = [
'name' => '田中太郎',
];
多次元の連想配列を初期化する
連想配列の中に配列を入れる
連想配列の値として、さらに配列を入れることもできます。
$user = [
'id' => 1,
'name' => '田中太郎',
'profile' => [
'age' => 30,
'address' => '東京都',
'job' => 'エンジニア',
],
];
このように、配列の中に配列が入っている構造を多次元配列といいます。
多次元連想配列の値を取り出す
多次元の連想配列から値を取り出す場合は、キーを順番に指定します。
echo $user['profile']['age']; // 30
echo $user['profile']['address']; // 東京都
echo $user['profile']['job']; // エンジニア
$user['profile'] で profile 配列を取り出し、その中の age、address、job にアクセスしているイメージです。
多次元の連想配列は、ユーザーの詳細情報、商品情報、設定情報、APIレスポンスなどでよく使われます。
複数の連想配列をまとめて初期化する
ユーザー一覧を作る例
複数のユーザー情報を扱う場合は、連想配列を複数まとめて初期化できます。
$users = [
[
'id' => 1,
'name' => '田中太郎',
'email' => 'tanaka@example.com',
],
[
'id' => 2,
'name' => '佐藤花子',
'email' => 'sato@example.com',
],
[
'id' => 3,
'name' => '鈴木一郎',
'email' => 'suzuki@example.com',
],
];
この場合、$users は「ユーザー情報の一覧」です。
それぞれの要素が、1人分の連想配列になっています。
一覧データから値を取り出す
1人目の名前を取り出す場合は、次のように書きます。
echo $users[0]['name']; // 田中太郎
2人目のメールアドレスを取り出す場合は、次のように書きます。
echo $users[1]['email']; // sato@example.com
$users[0] は1人目の連想配列、$users[1] は2人目の連想配列を表します。
初期化後に値を追加・変更する方法
新しいキーと値を追加する
初期化した連想配列に、あとから新しいキーと値を追加できます。
$user = [
'name' => '田中太郎',
'age' => 30,
];
$user['email'] = 'tanaka@example.com';
この処理のあと、配列は次のような状態になります。
$user = [
'name' => '田中太郎',
'age' => 30,
'email' => 'tanaka@example.com',
];
新しい項目を追加するときは、存在しないキーを指定して代入します。
既存の値を上書きする
すでに存在するキーに値を代入すると、その値は上書きされます。
$user = [
'name' => '田中太郎',
'age' => 30,
];
$user['age'] = 31;
echo $user['age']; // 31
この場合、age というキーはすでに存在しているため、新しく追加されるのではなく、30 から 31 に更新されます。
キーを指定せずに値を追加する場合
$array[] = 値 の挙動
PHPでは、キーを指定せずに値を追加することもできます。
$data = [
'name' => '田中太郎',
];
$data[] = '追加データ';
この場合、自動的に整数キーが割り振られます。
$data = [
'name' => '田中太郎',
0 => '追加データ',
];
すでに整数キーが存在しない場合は、基本的に 0 から割り振られます。
連想配列ではキーを明示するのがおすすめ
連想配列でキーを指定せずに値を追加すると、文字列キーと整数キーが混在します。
$data = [
'name' => '田中太郎',
0 => '追加データ',
];
このような配列は、あとから見たときに意味がわかりにくくなる場合があります。
そのため、連想配列として扱う場合は、キーを明示して追加するのがおすすめです。
$data['memo'] = '追加データ';
この方が、memo というキーの意味がわかりやすくなります。
数値キーと文字列キーの混在に注意する
数値キーと文字列キーは混在できる
PHPの配列では、数値キーと文字列キーを混在させることができます。
$data = [
'name' => '田中太郎',
0 => 'apple',
1 => 'banana',
];
PHPの配列は柔軟なため、通常の配列のようにも、連想配列のようにも使えます。
ただし、実務では、数値キーと文字列キーを混在させると、コードの意図がわかりにくくなることがあります。
連想配列として使うなら、次のように文字列キーに統一した方が読みやすいです。
$data = [
'name' => '田中太郎',
'favorite_fruit_1' => 'apple',
'favorite_fruit_2' => 'banana',
];
数値文字列のキーに注意する
PHPでは、'1' のような整数として解釈できる文字列キーは、整数キーとして扱われる場合があります。
$data = [
'1' => 'apple',
1 => 'banana',
];
var_dump($data);
この場合、'1' と 1 は同じキーとして扱われ、後から指定した値で上書きされます。
結果として、次のような配列になります。
array(1) {
[1]=>
string(6) "banana"
}
IDや番号のような値をキーにする場合は、数値文字列の扱いに注意しましょう。
末尾のカンマは付けてもよい
配列の最後にカンマを付けられる
PHPでは、配列の最後の要素にカンマを付けても問題ありません。
$user = [
'name' => '田中太郎',
'age' => 30,
'email' => 'tanaka@example.com',
];
最後の 'email' => 'tanaka@example.com', にカンマが付いていますが、これは正しい書き方です。
複数行の配列では末尾カンマがおすすめ
複数行で連想配列を書く場合は、末尾カンマを付けると管理しやすくなります。
たとえば、あとから address を追加する場合を考えます。
$user = [
'name' => '田中太郎',
'age' => 30,
'email' => 'tanaka@example.com',
'address' => '東京都',
];
末尾カンマを付けておくと、新しい行を追加するときに前の行を修正する必要が少なくなります。
実務では、複数行の配列には末尾カンマを付ける書き方がよく使われます。
foreach で連想配列を処理する
キーと値を取り出す
初期化した連想配列は、foreach を使って処理できます。
$user = [
'name' => '田中太郎',
'age' => 30,
'email' => 'tanaka@example.com',
];
foreach ($user as $key => $value) {
echo $key . ': ' . $value . PHP_EOL;
}
出力イメージは次の通りです。
name: 田中太郎
age: 30
email: tanaka@example.com
$key にはキー、$value には値が入ります。
値だけを取り出す
キーが不要な場合は、値だけを取り出すこともできます。
foreach ($user as $value) {
echo $value . PHP_EOL;
}
ただし、連想配列ではキーに意味があることが多いため、実務では次のようにキーと値の両方を使う場面が多いです。
foreach ($user as $key => $value) {
echo $key . ': ' . $value . PHP_EOL;
}
存在しないキーを参照するときの注意点
存在しないキーをそのまま使うと警告が出る
連想配列で存在しないキーを参照すると、警告の原因になります。
$user = [
'name' => '田中太郎',
];
echo $user['email'];
この例では、email というキーが存在しません。
現在のPHPでは、存在しない配列キーを参照すると、Undefined array key のような警告が出ます。
そのため、キーが存在するかわからない場合は、安全な書き方を使いましょう。
?? を使ってデフォルト値を指定する
存在しない可能性があるキーには、?? を使うと便利です。
$user = [
'name' => '田中太郎',
];
$email = $user['email'] ?? '未登録';
echo $email; // 未登録
?? は、左側の値が存在しない場合や null の場合に、右側の値を使います。
フォーム入力やAPIレスポンスのように、必ず値が入っているとは限らない場面でよく使います。
$name = $_POST['name'] ?? '';
$email = $_POST['email'] ?? '';
isset() と array_key_exists() の使い分け
isset() は値が null だと false になる
キーが存在するか確認するときは、isset() を使う方法があります。
$user = [
'email' => 'tanaka@example.com',
];
if (isset($user['email'])) {
echo $user['email'];
}
ただし、isset() は値が null の場合に false を返します。
$user = [
'email' => null,
];
var_dump(isset($user['email'])); // bool(false)
つまり、isset() は「キーが存在していて、かつ値が null ではないか」を確認するイメージです。
array_key_exists() はキーの存在を確認する
値が null でも、キーが存在しているかどうかを確認したい場合は、array_key_exists() を使います。
$user = [
'email' => null,
];
var_dump(array_key_exists('email', $user)); // bool(true)
この場合、email の値は null ですが、キー自体は存在しているため true になります。
使い分けの目安は、次の通りです。
| 確認したいこと | 使う関数 |
|---|---|
| 値が使える状態か確認したい | isset() |
値が null でもよいのでキーの存在を確認したい | array_key_exists() |
実務では、単に値があるか確認したい場合は isset()、キーの存在そのものを厳密に確認したい場合は array_key_exists() を使うとよいでしょう。
設定値として連想配列を初期化する例
アプリケーション設定の例
Webアプリでは、設定値を連想配列で管理することがあります。
$config = [
'app_name' => 'My App',
'debug' => true,
'timezone' => 'Asia/Tokyo',
'database' => [
'host' => 'localhost',
'name' => 'sample_db',
'user' => 'root',
'password' => '',
],
];
このように書くと、アプリ名、デバッグ設定、タイムゾーン、データベース接続情報などを1つの配列にまとめられます。
設定値を取り出す方法
設定値を使うときは、キーを指定します。
echo $config['app_name'];
echo $config['timezone'];
echo $config['database']['host'];
多次元配列になっている部分は、キーを順番に指定して取り出します。
echo $config['database']['name'];
このような連想配列は、設定ファイルや環境ごとのオプション管理でよく使われます。
商品データとして連想配列を初期化する例
商品情報の例
ECサイトや商品一覧では、商品情報を連想配列で表現できます。
$product = [
'id' => 101,
'name' => 'ワイヤレスマウス',
'price' => 2980,
'category' => 'PC周辺機器',
'in_stock' => true,
];
商品名、価格、カテゴリ、在庫状況などをキーと値で整理できます。
HTMLに出力する例
連想配列の値をHTMLに出力する場合は、エスケープ処理を行うのが基本です。
echo '<h2>' . htmlspecialchars($product['name'], ENT_QUOTES, 'UTF-8') . '</h2>';
echo '<p>価格:' . number_format((int) $product['price']) . '円</p>';
htmlspecialchars() を使うことで、HTMLとして解釈される文字を安全に変換できます。
特に、ユーザー入力や外部データをHTMLに表示する場合は、XSS対策としてエスケープ処理を忘れないようにしましょう。
フォームデータとして連想配列を初期化する例
フォームの初期値を用意する
フォームの初期値を連想配列で用意することもできます。
$form = [
'name' => '',
'email' => '',
'message' => '',
];
このように初期化しておくと、フォーム画面で各項目を扱いやすくなります。
POSTデータを使って初期化する
フォームから送信された値を使う場合は、$_POST の値を連想配列に入れます。
$form = [
'name' => $_POST['name'] ?? '',
'email' => $_POST['email'] ?? '',
'message' => $_POST['message'] ?? '',
];
?? '' を使うことで、該当するPOSTデータが存在しない場合でも、空文字を設定できます。
これにより、存在しないキーを参照して警告が出るのを防ぎやすくなります。
WordPressで使われる連想配列の例
WP_Query の引数で使う例
WordPressでは、関数やクラスに渡す設定値として連想配列をよく使います。
たとえば、WP_Query で投稿を取得する条件を指定する場合、次のように書きます。
$query = new WP_Query([
'post_type' => 'post',
'posts_per_page' => 5,
'category_name' => 'news',
]);
この例では、以下のような条件を指定しています。
'post_type' => 'post'
'posts_per_page' => 5
'category_name' => 'news'
WordPressでは、このように連想配列を使って、投稿タイプ、取得件数、カテゴリ、並び順などを指定する場面が多くあります。
引数用の配列を事前に作る例
引数が多い場合は、先に $args という連想配列を作る書き方もよく使われます。
$args = [
'post_type' => 'post',
'posts_per_page' => 10,
'orderby' => 'date',
'order' => 'DESC',
];
$query = new WP_Query($args);
このようにすると、条件部分を整理して書けるため、コードが読みやすくなります。
PHPの連想配列に慣れておくと、WordPressのテーマ制作やカスタマイズでも役立ちます。
PHPの連想配列初期化でよくある間違い
=> ではなく = を使ってしまう
連想配列では、キーと値を対応させるときに => を使います。
間違い例は次の通りです。
$user = [
'name' = '田中太郎',
'age' = 30,
];
正しくは、次のように書きます。
$user = [
'name' => '田中太郎',
'age' => 30,
];
= は代入に使う記号であり、配列のキーと値を対応させる場合は => を使います。
文字列キーをクォートで囲まない
文字列キーをクォートで囲まない書き方は避けましょう。
$user = [
name => '田中太郎',
];
正しくは、次のように書きます。
$user = [
'name' => '田中太郎',
];
PHPでは、クォートなしの文字は定数として解釈されるため、エラーの原因になります。
存在しないキーをそのまま参照する
存在しないキーをそのまま参照すると、警告が出ることがあります。
echo $user['email'];
キーが存在しない可能性がある場合は、次のように書くと安全です。
echo $user['email'] ?? '';
デフォルトの表示文を入れることもできます。
echo $user['email'] ?? 'メールアドレス未登録';
配列の閉じカッコを忘れる
多次元配列では、配列の閉じカッコを忘れやすくなります。
正しい例は次の通りです。
$user = [
'name' => '田中太郎',
'profile' => [
'age' => 30,
'address' => '東京都',
],
];
インデントをそろえると、どの配列がどこで終わっているのかがわかりやすくなります。
実務でおすすめの連想配列の書き方
複数行で読みやすく書く
実務では、連想配列を複数行で書くと読みやすくなります。
$user = [
'id' => 1,
'name' => '田中太郎',
'email' => 'tanaka@example.com',
'role' => 'admin',
];
1行でも書けますが、項目が増えると読みにくくなります。
$user = ['id' => 1, 'name' => '田中太郎', 'email' => 'tanaka@example.com', 'role' => 'admin'];
そのため、項目数が多い場合は複数行で書くのがおすすめです。
キー名は意味がわかる名前にする
連想配列のキー名は、できるだけ意味がわかる名前にしましょう。
わかりにくい例です。
$user = [
'n' => '田中太郎',
'a' => 30,
];
この場合、n や a が何を意味しているのかわかりにくくなります。
わかりやすい例は次の通りです。
$user = [
'name' => '田中太郎',
'age' => 30,
];
キー名を見るだけで、どのような値が入っているのか判断しやすくなります。
末尾カンマを付ける
複数行で連想配列を書く場合は、末尾カンマを付けると修正しやすくなります。
$user = [
'id' => 1,
'name' => '田中太郎',
'email' => 'tanaka@example.com',
];
あとから要素を追加しても、前の行を変更せずに済みます。
$user = [
'id' => 1,
'name' => '田中太郎',
'email' => 'tanaka@example.com',
'role' => 'admin',
];
コードレビューや差分確認の面でも、末尾カンマを付ける書き方は便利です。
連想配列の初期化パターンまとめ
最初から値を入れて初期化する
値が決まっている場合は、最初からまとめて初期化します。
$user = [
'name' => '田中太郎',
'age' => 30,
];
一番基本的な書き方です。
空で初期化する
あとから値を追加したい場合は、空配列として初期化します。
$user = [];
条件分岐やループ処理の中で値を追加していく場合に使いやすい書き方です。
あとから値を追加する
空配列や既存の配列に対して、キーを指定して値を追加します。
$user = [];
$user['name'] = '田中太郎';
$user['age'] = 30;
キーを指定しているため、値の意味がわかりやすくなります。
多次元配列として初期化する
関連する情報をまとめたい場合は、配列の中に配列を入れます。
$user = [
'name' => '田中太郎',
'profile' => [
'age' => 30,
'address' => '東京都',
],
];
ユーザー情報、商品情報、設定情報などを整理するときに便利です。
一覧データとして初期化する
複数のデータを扱う場合は、連想配列を配列の中に並べます。
$users = [
[
'name' => '田中太郎',
'age' => 30,
],
[
'name' => '佐藤花子',
'age' => 25,
],
];
データベースの取得結果やAPIレスポンスのような一覧データを扱うときによく使います。
まとめ
PHPの連想配列は、キーと値をセットにしてデータを管理するための便利な仕組みです。
基本的な初期化は、次のように書きます。
$user = [
'name' => '田中太郎',
'age' => 30,
'email' => 'tanaka@example.com',
];
連想配列では、=> を使ってキーと値を対応させます。
'キー' => 値
値を取り出すときは、キーを指定します。
echo $user['name'];
実務では、次の点を意識すると安全で読みやすいコードになります。
| ポイント | 内容 |
|---|---|
[] 構文を使う | 現在よく使われる簡潔な書き方 |
| 文字列キーはクォートで囲む | 未定義定数として解釈されるのを防ぐ |
| キー名はわかりやすくする | コードの意味が伝わりやすくなる |
| 末尾カンマを付ける | 要素追加時の修正がしやすい |
| 存在しないキーに注意する | ??、isset()、array_key_exists() を使う |
| 数値文字列キーに注意する | '1' が整数キー 1 として扱われる場合がある |
PHPの連想配列は、ユーザー情報、商品情報、記事データ、設定値、フォーム入力、WordPressの引数指定など、Web開発の多くの場面で使われます。
まずは、以下の基本形をしっかり覚えておきましょう。
$data = [
'key' => 'value',
];
この形に慣れておくと、PHPのコードを読む力も書く力も大きく向上します。
以上、PHPの連想配列の初期化についてでした。
最後までお読みいただき、ありがとうございました。










