array_filter

関数の概要

PHPの array_filter 関数は、配列の要素を条件に基づいて絞り込み、新しい配列を返します。ユーザーが定義したコールバック関数を使い、各要素がその条件を満たすかどうかを判定します。条件に合う要素だけを抽出したいときに便利な配列操作の関数です。

パラメータの説明

  • array(必須):フィルターをかける対象の配列。
  • callback(省略可):各要素を判定するためのコールバック関数。返り値が真となる要素だけが残ります。指定しない場合は、値が false 相当のものが除外されます。
  • mode(PHP 5.6.0以降):コールバック関数に渡す引数の種類を指定。ARRAY_FILTER_USE_KEY(キーを渡す)、ARRAY_FILTER_USE_BOTH(キー・値両方を渡す)が選べます。省略時は値のみを渡します。

戻り値

コールバック関数の条件を満たした配列の要素を含む新しい配列を返します。キーは元の配列のまま保持されるため、必要に応じて array_values() 等でキーを再割り当てすることもあります。

使用例

基本的な使い方

<?php
$numbers = [1, 2, 3, 4, 5, 6];

// 偶数のみ抽出
$even = array_filter($numbers, function($num) {
    return $num % 2 === 0;
});

print_r($even);
?>

この例では、配列から偶数だけを絞り込んでいます。結果はキーが元のまま残ります。

コールバックを使わずに真値だけを残す

<?php
$inputs = [0, 1, false, true, '', 'Hello', null];

// 真とみなされる値だけ残す
$filtered = array_filter($inputs);

print_r($filtered);
?>

コールバックを省略した場合、false0""null など「false」とみなされる値が除外されます。

キーを使ったフィルター

<?php
$array = ['a' => 10, 'b' => 20, 'c' => 30, 'd' => 40];

// キーが 'a' または 'c' の要素だけ残す
$filtered = array_filter($array, function($key) {
    return in_array($key, ['a', 'c']);
}, ARRAY_FILTER_USE_KEY);

print_r($filtered);
?>

この例では、キーの値で絞り込んでいます。モードを指定してキーをコールバックに渡しています。

関連する関数

  • array_map:配列の各要素に関数を適用し、新しい配列を生成する。
  • array_reduce:配列の要素を畳み込み処理する。
  • array_keys:配列のキーのみを取得する。
  • array_values:配列の値のみを取得し、キーを再割り当てする。

まとめ

array_filter はPHPで配列の要素を簡単に条件で絞り込める便利な関数です。コールバック関数を使うことで柔軟にフィルター条件を指定でき、キーを利用した絞り込みも可能です。データの選別や不要要素の除外に頻繁に使われるため、配列操作を効率よく行いたいときにはぜひ覚えておきたい関数です。