PHPのarray_filterの使い方!配列の要素をフィルタリング

PHPのarray_filter関数について書いています。

array_filter関数は、コールバック関数を使用して配列の要素をフィルタリングし、条件を満たす要素のみを含む新しい配列を返します。
この関数を使うと、配列から特定の条件に合致する要素だけを抽出したり、不要な要素を削除したりする場合に便利です。

例えば、数値配列から偶数だけを抽出したり、文字列配列から空文字列を削除したりできます。

array_filter関数の基本的な使い方

array_filter関数は、コールバック関数を使用して配列の要素をフィルタリングし、条件を満たす要素のみを含む新しい配列を返します。
基本的な構文は以下のとおりです。

array_filter(array $array, callable|null $callback = null, int $mode = 0): array
  • $array: フィルタリングする配列。
    • 任意の型の値を要素とする配列を指定します。
  • $callback: コールバック関数(省略可能)。渡されなかった場合は「空」の値が削除される。
    • 各要素を引数として受け取り、フィルタリングの条件に応じてtrueまたはfalseを返す関数を指定します。
    • 省略した場合、falseと評価される要素が削除されます。
  • $mode: コールバック関数に渡す引数(省略可能)。デフォルトは値のみ。
    • ARRAY_FILTER_USE_KEY: コールバック関数にキーを渡します。
    • ARRAY_FILTER_USE_BOTH: コールバック関数にキーと値の両方を渡します。

array_filter関数の戻り値

array_filter関数の戻り値は、フィルタリングされた要素のみを含む新しい配列です。
コールバック関数がすべての要素に対してfalseを返した場合、空の配列を返します。

コールバック関数を使用して配列をフィルタリングする

配列から偶数の要素だけフィルタリングして取り出してみます。

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

$result = array_filter($array, function ($value) {
    return $value % 2 === 0;
});

print_r($result);
// 結果:Array ( [1] => 2 [3] => 4 [5] => 6 )
?>

最初に、数値の1から6を詰めた$array配列を作成しています。

次の処理でarray_filter関数を使って、$array配列から偶数のみを抽出しています。
第2引数に渡しているのが、判定をするためのコールバック関数です。

コールバック関数の$valueには配列の値がひとつずつ渡され、処理の中で判断につかわれます。
$value % 2 === 0」とし、要素が偶数の場合にtrueを返し、奇数の場合にfalseを返します。

結果($result)を確認すると、trueが返ってきたものだけ、配列の要素になっていることが確認できます。

コールバック関数を使用せずに配列をフィルタリングする

コールバック関数を指定せずに使うと、0・空文字・falseを配列から取り除くことができます。

<?php
$array = [0, 1, '', 'hello', false, true];

$result = array_filter($array);

print_r($result);
// 結果:Array ( [1] => 1 [3] => hello [5] => true )
?>

array_filter関数に配列のみを指定して、コールバック関数を指定せずに使用しています。
こうすると、配列の各要素がfalseと評価される要素(0''falseなど)が削除されます。

$array0・空文字・falseが削除されて、返ってきていることが確認できました。

キーを条件に使って、配列をフィルタリングする

配列のキーを使って、配列をフィルタリングしてみます。

<?php
$fruits = ['apple' => 'red', 'orange' => 'orange', 'banana' => 'yellow', 'grape' => 'blue', 'peach' => 'pink'];

$result = array_filter($fruits, function ($key) {
    return strstr($key, 'n');
}, ARRAY_FILTER_USE_KEY);

print_r($result);
// 結果:Array (
//    [orange] => orange
//    [banana] => yellow
// )
?>

最初にフィルタリング対象の$fruits配列を作成しました。

次の処理でarray_filter関数を使っています。
第3引数にARRAY_FILTER_USE_KEYを渡しているので、判定するための第2引数のコールバック関数には配列のキーが渡されます。

コールバック関数では、配列のキーに「n」を含む場合にtrueを返しています。
結果($result)を確認すると、配列のキーに「n」が含まれる要素のみが返ってきました。

array_filter関数を使うメリット

array_filter関数を使う主なメリットは以下のとおりです。

  • 配列の要素のフィルタリング: 配列から特定の条件に合致する要素だけを抽出できます。
  • コードの簡潔化: ループ処理を記述する必要がなく、コードが簡潔になります。
  • 可読性の向上: コードの意図が明確になり、可読性が向上します。

PHPのarray_filter関数の使い方まとめ

今回はPHPのarray_filter関数の使い方について解説しました。
この記事の内容をまとめます。

・`array_filter(array $array, callable|null $callback = null, int $mode = 0): array`で配列の要素をフィルタリングする。
・`$array`はフィルタリングする配列。
・`$callback`はコールバック関数(省略可能)。
・`$mode`はコールバック関数に渡す引数(省略可能)。
・配列から特定の条件に合致する要素だけを抽出する場合に便利。
PHP

コメント