【サクッと解説】PHPの配列操作関数まとめ(array_merge, array_filter など)

目次

1. 本記事のポイント

  • PHPの基本的な配列操作関数(array_merge, array_filter など)を実行例付きで解説
  • 各関数の挙動や副作用、使い分けの判断基準を整理
  • 実務上でよく使うパターンや設計意図を踏まえた使い方を紹介

2. PHPの配列操作関数とは?

PHPは配列の取り扱いに優れた言語であり、標準関数として多くの配列操作機能を提供しています。連想配列・数値配列の区別なく、様々な形で要素の加工・抽出・結合などが可能です。

配列操作関数は、データ構造の前処理、集計処理、APIレスポンスの整形など、業務ロジックの中核を担うことが多く、関数の選定と正しい理解がコード品質に直結します。

ここでは代表的な関数を取り上げ、構文の違いや使いどころ、誤用しやすいポイントまで含めて実践的に解説します。

3. 詳細解説

配列を結合:array_merge()

複数の配列を結合し、1つの配列として返します。

PHP
$a = ["apple", "banana"];
$b = ["orange"];
$merged = array_merge($a, $b);

print_r($merged);
// 出力:
// Array (
//   [0] => apple
//   [1] => banana
//   [2] => orange
// )

連想配列同士を結合すると、キーが重複した場合は後勝ちで上書きされます。

PHP
$a = ["a" => 1, "b" => 2];
$b = ["b" => 3, "c" => 4];
$result = array_merge($a, $b);

print_r($result);
// 出力: ["a" => 1, "b" => 3, "c" => 4]

条件でフィルタ:array_filter()

配列要素を条件で絞り込む場合に使用します。

PHP
$data = [1, 2, 3, 4, 5];
$even = array_filter($data, function($v) {
    return $v % 2 === 0;
});

print_r($even);
// 出力: Array ( [1] => 2 [3] => 4 )

キーは維持されるため、再インデックスする場合は array_values() を併用します。


値を変換:array_map()

各要素に対して関数を適用して変換します。

PHP
$data = [1, 2, 3];
$squared = array_map(function($v) {
    return $v * $v;
}, $data);

print_r($squared);
// 出力: Array ( [0] => 1 [1] => 4 [2] => 9 )

複数配列を同時に処理することも可能です。

PHP
$a = [1, 2, 3];
$b = [4, 5, 6];
$sum = array_map(function($x, $y) {
    return $x + $y;
}, $a, $b);

print_r($sum);
// 出力: Array ( [0] => 5 [1] => 7 [2] => 9 )

キーを取得:array_keys(), array_values()

配列のキーや値だけを取得する場合に使用します。

PHP
$arr = ["a" => 100, "b" => 200];
print_r(array_keys($arr));   // 出力: ["a", "b"]
print_r(array_values($arr)); // 出力: [100, 200]

4. よくあるミス・誤解・落とし穴

  • array_merge()は数値添字配列であっても、再インデックスされるため元のキーは保持されません。
  • array_filter()は値の評価がfalseとなるもの(例:0, 空文字, null)も除外される点に注意。厳密な条件指定が必要な場合はコールバック必須です。
  • array_map()は引数の配列数が一致しないと、最短の長さに合わせて切り捨てられます。
  • キー情報が重要な処理では、array_values()による再インデックスで副作用が出る場合があるため注意が必要です。

5. まとめ

PHPの配列操作関数は設計の柔軟性を高める上で非常に重要です。

  • 配列の結合は array_merge()、要素抽出には array_filter()
  • 値の加工は array_map()、キーや値の一覧取得は array_keys() / array_values()

関数ごとの挙動の違いや副作用を正しく理解することで、安全で意図通りのデータ処理が可能になります。

よかったらシェアしてね!
  • URLをコピーしました!
目次