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
など)が削除されます。
$array
の0
・空文字・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`はフィルタリングする配列。
・`$callback`はコールバック関数(省略可能)。
・`$mode`はコールバック関数に渡す引数(省略可能)。
・配列から特定の条件に合致する要素だけを抽出する場合に便利。
コメント