PHPの配列 完全ガイド|初級試験頻出ポイント
配列はPHP8技術者認定初級試験で最も出題頻度が高いテーマの一つです。 インデックス配列・連想配列の基礎から、頻出の配列関数、試験で狙われやすい引っかけポイントまで まとめて解説します。
配列の基本|インデックス配列と連想配列
PHPの配列には、キーが自動で連番になるインデックス配列と、 キーを自分で指定する連想配列があります。
// インデックス配列(キーは自動で0から連番)
$fruits = ['りんご', 'みかん', 'ぶどう'];
echo $fruits[0]; // りんご
// 連想配列(キーを自分で指定)
$user = ['name' => '山田', 'age' => 20];
echo $user['name']; // 山田
foreachでキーと値を取り出す
連想配列を扱うときは、foreach ($array as $key => $value)の形で
キーと値を同時に取り出せることを覚えておきましょう。
$scores = ['国語' => 80, '数学' => 95, '英語' => 70];
foreach ($scores as $subject => $score) {
echo "{$subject}: {$score}点\n";
}
初級試験で頻出の配列関数
| 関数 | 説明 |
|---|---|
count() | 要素数を取得する |
array_map() | 全要素にコールバックを適用した新しい配列を返す |
array_filter() | 条件を満たす要素だけを残した配列を返す(キーは維持される) |
array_merge() | 複数の配列を結合する(同じキーは後の値で上書き) |
in_array() | 値が配列内に存在するか判定する |
array_search() | 値からキーを検索する(見つからなければfalse) |
sort() / rsort() | 値を昇順・降順に並び替える(キーは振り直される) |
ksort() / asort() | キー・値を基準に、キーを保持したまま並び替える |
array_keys() / array_values() | キー一覧・値一覧を取得する |
$numbers = [3, 1, 4, 1, 5];
$doubled = array_map(fn ($n) => $n * 2, $numbers); // [6, 2, 8, 2, 10]
$evens = array_filter($numbers, fn ($n) => $n % 2 === 0); // [2 => 4]
$total = array_sum($numbers); // 14
$inArray = in_array(4, $numbers); // true
試験の引っかけポイント
① array_merge() と + 演算子の違い
同じキーが重複した場合、array_merge()は
後の値で上書きされますが、+演算子は
先の値が優先されます。この違いは頻出です。
$a = ['x' => 1, 'y' => 2];
$b = ['y' => 9, 'z' => 3];
$merged = array_merge($a, $b); // ['x' => 1, 'y' => 9, 'z' => 3](後勝ち)
$union = $a + $b; // ['x' => 1, 'y' => 2, 'z' => 3](先勝ち)
② sort系関数はキーが振り直される
sort()やrsort()を使うと、
元のキー(特に連想配列のキー)は失われ、0から始まる連番に振り直されます。
キーを維持したい場合はasort()やarsort()を使います。
③ array_search() の戻り値は == で比較しない
キー0が見つかった場合と、見つからずfalseが返る場合を
==で比較すると区別できません(0 == falseはtrue)。
必ず===で厳密に比較しましょう。