PHPの配列・連想配列とは?作り方・要素の操作を解説

PR PHP

PHPの配列・連想配列とは?作り方・要素の操作を解説

💡 この記事でわかること

  • インデックス配列と連想配列の違い、使い分け
  • 配列の作り方と、要素の取り出し・書き換え
  • $arr[] =・array_push・unset など、要素を追加・削除する方法
  • 連想配列のキーと値の扱い方、存在しないキーと ?? 演算子
  • foreach で配列を1つずつ処理する方法

1. 配列とは?

配列とは、
👉 複数の値をまとめて1つの変数で扱うためのしくみです。PHPの配列は、大きく2つの使い方があります。

  • インデックス配列:値を順番に並べる。0 から始まる番号(インデックス)で管理する
  • 連想配列:値を「キー(名前)」と「値」のペアで管理する
<?php
// インデックス配列:3人の名前を順番に並べる
$names = ["太郎", "花子", "次郎"];

// 連想配列:1人の情報を項目名つきで持つ
$user = ["name" => "太郎", "age" => 20];

💡 PHPでは、どちらも同じ「配列」という1つの型です[ ] で書き、キーを => で指定すると連想配列になります(array(...) という書き方もありますが、現在は [ ] が一般的です)。

👉 PHPのデータ型(文字列・数値・真偽値)についての記事はこちら


2. インデックス配列の作り方と取り出し方

要素は [ ] の中に値をカンマ区切りで並べて作ります。取り出すときは 0から始まる番号(インデックス)[ ] で指定します。

<?php
$fruits = ["りんご", "みかん", "ぶどう"];

echo $fruits[0];   // りんご(1番目)
echo $fruits[2];   // ぶどう(3番目)

$fruits[1] = "もも";   // 2番目を書き換える
echo $fruits[1];       // もも

👉 PHPでは、Pythonのような $fruits[-1](うしろから数える書き方)は使えません。最後の要素がほしいときは end($fruits) を使います。存在しない番号を指定すると警告が出て null になります。


3. 要素の追加・削除

<?php
$tasks = ["買い物", "掃除"];

$tasks[] = "洗濯";        // 末尾に追加 → ["買い物", "掃除", "洗濯"]
array_push($tasks, "料理"); // これも末尾に追加(複数まとめても可)

$last = array_pop($tasks);   // 末尾を取り出して削除($last に "料理")
unset($tasks[0]);            // 0番目を削除

echo count($tasks);              // 2(要素数)
var_dump(in_array("掃除", $tasks)); // bool(true)(含まれているか)
  • $arr[] = 値:末尾に1つ追加する(いちばんよく使う書き方)
  • array_push($arr, 値):末尾に追加する。array_pop() は末尾を取り出して削除
  • unset($arr[番号]):指定した要素を削除する
  • count($arr):要素数。in_array(値, $arr):値が含まれるか

💡 unset() で途中の要素を消すと、番号は詰められません([0, 2] のように歯抜けになる)。番号を振り直したいときは array_values($arr) を使います。


4. foreach で1つずつ処理する

<?php
$fruits = ["りんご", "みかん", "ぶどう"];

foreach ($fruits as $fruit) {
    echo $fruit;
}

// 実行結果: りんご みかん ぶどう

👉 配列と foreach はセットでよく使いますprint_r($fruits)var_dump($fruits) を使うと、配列の中身をまとめて確認できます(echo $fruits; は配列に使えず警告になります)。

👉 PHPのif文・for文・while文(foreachの基本)についての記事はこちら


5. 連想配列の作り方と取り出し方

連想配列は キー => 値 のペアをカンマ区切りで並べて作ります。値を取り出すときは、番号ではなくキーを指定します。

<?php
$user = ["name" => "太郎", "age" => 20];

echo $user["name"];   // 太郎
echo $user["age"];    // 20

👉 存在しないキーを $user["email"] のように指定すると、警告が出て null になります。キーがあるか分からないときは、??(null合体演算子)で「なかったときの値」を指定すると安全です。

<?php
$user = ["name" => "太郎"];

echo $user["email"] ?? "未登録";   // 未登録(警告も出ない)

6. 連想配列の追加・変更・削除

<?php
$user = ["name" => "太郎", "age" => 20];

$user["age"] = 21;                  // 既存のキー → 値を変更
$user["email"] = "taro@example.com"; // 新しいキー → 追加

unset($user["age"]);   // キーごと削除

var_dump(array_key_exists("name", $user)); // bool(true)

💡 $配列[キー] = 値 は、キーが既にあれば「変更」、なければ「追加」になります。キーの有無を調べるには array_key_exists()isset() を使います(isset() は値が null のとき false を返す点だけ注意)。


7. foreach で連想配列を処理する

<?php
$scores = ["国語" => 80, "数学" => 65, "英語" => 90];

// キーと値の両方を取り出す
foreach ($scores as $subject => $score) {
    echo "{$subject}: {$score}点 ";
}

// キーだけ / 値だけ
print_r(array_keys($scores));    // Array ( [0] => 国語 [1] => 数学 [2] => 英語 )
print_r(array_values($scores));  // Array ( [0] => 80 [1] => 65 [2] => 90 )

👉 連想配列を foreach で回すときは as $キー => $値 と書き、キーと値を同時に受け取るのが基本形です。


8. 配列の中に配列を入れる(多次元配列)

実際のプログラムでは、「連想配列をインデックス配列に並べる」形がよく登場します。たとえば「複数人のユーザー情報」は次のように表せます。

<?php
$users = [
    ["name" => "太郎", "age" => 20],
    ["name" => "花子", "age" => 25],
    ["name" => "次郎", "age" => 18],
];

foreach ($users as $u) {
    echo "{$u['name']}さん {$u['age']}歳 ";
}

// 太郎さん 20歳 花子さん 25歳 次郎さん 18歳

💡 この「連想配列のリスト」は、データベースから取り出したデータや、JSONで受け取るデータとほぼ同じ形です。個別の値には $users[0]["name"] のように [ ] を重ねてアクセスします。


9. よく使う配列関数 早見表

関数できること
count($arr)要素数を数える
in_array($v, $arr)値が含まれるか(true / false)
array_key_exists($k, $arr)キーが存在するか
array_keys($arr) / array_values($arr)キーの一覧 / 値の一覧を取り出す
array_push / array_pop末尾に追加 / 末尾を取り出して削除
array_shift / array_unshift先頭を取り出して削除 / 先頭に追加
implode(",", $arr)配列を区切り文字でつないで文字列にする
sort($arr)要素を並べ替える

10. まとめ

  • PHPの配列はインデックス配列連想配列を1つの型で扱う
  • 作成は [ ]、連想配列はキーを => で指定する
  • 追加は $arr[] =、削除は unset()、要素数は count()
  • 存在しないキーは警告になる。$arr[キー] ?? 初期値 で安全に取り出せる
  • 配列の中身の確認は print_r() / var_dump()、繰り返しは foreach

👉 「配列を作る → foreach で回す → print_r で確認する」の流れに慣れておくと、この先のフォーム処理やデータベース操作がぐっと分かりやすくなります。まずは小さな配列で追加・取り出し・繰り返しを試してみましょう。

-PHP
-, , ,