PHP開発中、処理アレイは非常に一般的な要件です。典型的なシナリオの1つは、 false 、 0 、 "" (空の文字列)、 null 、空の配列など、boolean値のfalseで配列内の要素を削除することです。この時点で、 array_filter()関数は非常に便利なツールです。
array_filter()は、phpの組み込み関数です。その機能は、コールバック関数で配列内の各要素をフィルタリングし、コールバック関数によってテストされたすべての要素の新しい配列を返すことです。コールバック関数が渡されない場合、 falseのブール値ですべての要素を自動的に削除します。
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
$配列:フィルターする元の配列
$ callback (オプション):カスタムコールバック関数
$モード(オプション):キーまたは値がコールバック関数に渡されたかどうかを制御できます
コールバック関数を渡さない場合、 array_filter()は、デフォルトでArrayのfalseに相当するすべての値を削除します。
$data = [
'name' => 'John',
'age' => 0,
'email' => '',
'is_active' => false,
'preferences' => [],
'bio' => null,
'website' => 'https://m66.net/profile/john'
];
$filtered = array_filter($data);
print_r($filtered);
Array
(
[name] => John
[website] => https://m66.net/profile/john
)
ご覧のとおり、 0 、 '' 、 false 、 null 、 []はすべて除外され、ブール値の要素のみが真実です。
たとえば、 falseとnullのみを削除して0および''を保持する場合は、コールバック関数をカスタマイズする必要があります。
$filtered = array_filter($data, function ($value) {
return $value !== false && $value !== null;
});
print_r($filtered);
これにより、フィルタリングルールをより正確に制御できます。