現在の位置: ホーム> 最新記事一覧> array_filter()を使用して、ブール値のfalseで要素をフィルタリングします

array_filter()を使用して、ブール値のfalseで要素をフィルタリングします

M66 2025-06-05

PHP開発中、処理アレイは非常に一般的な要件です。典型的なシナリオの1つは、 false0"" (空の文字列)、 null 、空の配列など、boolean値のfalseで配列内の要素を削除することです。この時点で、 array_filter()関数は非常に便利なツールです。

array_filter()とは何ですか?

array_filter()は、phpの組み込み関数です。その機能は、コールバック関数で配列内の各要素をフィルタリングし、コールバック関数によってテストされたすべての要素の新しい配列を返すことです。コールバック関数が渡されない場合、 falseのブール値ですべての要素を自動的に削除します。

文法:

 array_filter(array $array, ?callable $callback = null, int $mode = 0): array
  • $配列:フィルターする元の配列

  • $ callback (オプション):カスタムコールバック関数

  • $モード(オプション):キーまたは値がコールバック関数に渡されたかどうかを制御できます

例:ブール値のfalseで要素を削除します

コールバック関数を渡さない場合、 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''falsenull[]はすべて除外され、ブール値の要素のみが真実です

いくつかの「偽の値」を除外したい場合はどうなりますか?

たとえば、 falsenullのみを削除して0および''を保持する場合は、コールバック関数をカスタマイズする必要があります。

 $filtered = array_filter($data, function ($value) {
    return $value !== false && $value !== null;
});

print_r($filtered);

これにより、フィルタリングルールをより正確に制御できます。