PHP開発では、今日のことなど、さまざまなタイプの配列から特定の種類のデータを除外する必要性に遭遇することがよくあります。現時点では、 array_filter()が役立ちます。
array_filter()は、PHPの組み込み配列関数の1つであり、主に配列の要素をフィルタリングするために使用されます。アレイとコールバック関数(オプション)を受け入れ、 trueを返す新しい一連の要素を返します。
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
$配列:フィルターする配列。
$ callback :ユーザー定義の関数配列内の各要素をテストします。
$モード:オプションパラメーターコールバック関数のパラメーターがキー、値、またはその両方であるかどうかを指定するためのパラメーター。
以下は、複数のタイプの要素を含む例です。
$data = [
"apple",
42,
"banana",
true,
"cherry",
null,
3.14,
["nested", "array"],
(object) ["name" => "grape"]
];
私たちの目標は、すべての非弦の値を除外し、文字列要素のみを保存することです。
$filtered = array_filter($data, 'is_string');
print_r($filtered);
Array
(
[0] => apple
[2] => banana
[4] => cherry
)
array_filter()が元の配列のキー名を保持することに注意してください。結果を再インネックスした配列にしたい場合は、 array_values()を使用できます。
$filtered = array_values(array_filter($data, 'is_string'));
5を超える長さの文字列のみを保持するなど、ロジックを拡張したい場合は、これを書くことができます。
$filtered = array_filter($data, function($item) {
return is_string($item) && strlen($item) > 5;
});
print_r($filtered);
フォームデータの配列を処理する際に、ユーザーが埋めている文字列情報を抽出する必要があるとします。
$userInput = [
'username' => 'john_doe',
'age' => 28,
'email' => 'john@example.com',
'newsletter' => true,
'website' => 'https://m66.net/profile/john'
];
$stringsOnly = array_filter($userInput, 'is_string');
print_r($stringsOnly);
Array
(
[username] => john_doe
[email] => john@example.com
[website] => https://m66.net/profile/john
)
これにより、電子メールの送信やデータベースクエリの構築など、テキストタイプのデータのみを処理できます。
is_string ()を使用してarray_filter ()を使用すると、混合配列のすべての文字列要素を非常に便利に除外できます。この方法はシンプルで効率的であり、毎日のPHP開発における配列データのクリーニングと処理に非常に適しています。