💡 この記事でわかること
- インデックス配列と連想配列の違い、使い分け
- 配列の作り方と、要素の取り出し・書き換え
$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 で確認する」の流れに慣れておくと、この先のフォーム処理やデータベース操作がぐっと分かりやすくなります。まずは小さな配列で追加・取り出し・繰り返しを試してみましょう。