PHPでは、 array_filter()は非常に実用的な関数であり、カスタマイズを伴う配列内の要素をフィルタリングできます。コールバック関数を渡すことにより、特定の論理条件に基づいて配列から要素を保持または削除できます。この記事では、 array_filter()を使用して配列をフィルタリングする方法を紹介します。
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
$配列:フィルタリングする必要がある元の配列。
$ callback :各要素が保持されているかどうかを判断するために使用されるコールバック関数。 return trueは予約されたことを意味し、偽はcullingすることを意味します。
$モード:オプションのパラメーター着信コールバック関数のパラメーター(キー、値、またはキー値ペア)を制御します。
$ callbackが提供されていない場合、 falseの値を持つ要素がデフォルトでフィルタリングされます( 0 、空の文字列、ヌルなど)。
文字列、フローティングポイント数、ブール値、整数など、さまざまなタイプのデータを含む配列があるとします。整数だけを維持したい。
<?php
$data = [1, '2', 3.5, 4, 'hello', true, 0, null, 7, '8'];
$integers = array_filter($data, function ($item) {
return is_int($item);
});
print_r($integers);
?>
Array
(
[0] => 1
[3] => 4
[8] => 7
)
ご覧のとおり、アレイ内の実際の整数のみが保存され、 「2」 (文字列)または3.5 (浮動小数点数)が除外されます。
デフォルトでは、 array_filter()は、元の配列のキーインデックスを保持します。 Reindexを使用する場合は、 array_values()を使用できます。
$integers = array_values(array_filter($data, function ($item) {
return is_int($item);
}));
このフィルタリング方法は、実際の開発に非常に役立ちます。たとえば、ユーザー入力またはリモートAPIからデータ配列が混合された場合、 array_filter()を使用して、検証またはデータのクリーニングを入力する必要がある場合にすばやく処理できます。
例えば:
// リモートインターフェイスから取得したデータをシミュレートします
$response = json_decode(file_get_contents("https://api.m66.net/data"), true);
$cleaned = array_filter($response['values'], function ($value) {
return is_int($value);
});
このコードでは、 https://api.m66.net/dataからデータを取得した後、 array_filter()を使用して非integer値を排除します。
array_filter()は、PHPの強力な配列処理機能です。コールバック関数を使用して、さまざまなカスタムフィルタリングロジックを実装できます。それを通して、特定のルールに準拠する整数、文字列、またはデータなど、アレイから必要な要素を簡単に抽出できます。
is_int()のような内蔵タイプ検出機能でそれを使用すると、データがクリーナーで信頼性を高め、コードをよりエレガントにすることができます。
Arrayを処理する必要がある場合は、 array_map()やarray_reduce()などの関数も試してみる価値があります。