PHPでは、 array_filter()関数は、配列要素をフィルタリングするための非常に便利なツールです。着信コールバック関数に基づいて配列内の要素をフィルタリングし、条件を満たす要素のみが保持されます。コールバック関数が渡されない場合、 array_filter()はfalseの値で要素を削除します。連想配列を処理する場合、 array_filter()は、複雑なデータフィルタリング操作を非常に便利に実行することもできます。次に、 array_filter()を使用して連想配列を処理する方法と、その仕組みとアプリケーションシナリオを詳細に説明します。
array array_filter ( array $array , callable $callback = ? , int $mode = 0 ) : array
$配列:フィルタリングする配列。
$ callback :フィルタリングのコールバック関数。コールバック関数が渡されない場合、 falseの値を持つ要素はデフォルトで削除されます。
$モード:コールバック関数のパラメーターが配列要素の値か、配列のキー値ペアであるかを決定します。 array_filter_use_key (デフォルト値)、 array_filter_use_use_both (キーと値の両方を渡します)。
PHPでは、関連する配列のキーは通常、文字列または数値であり、ペアの値は保存してフィルタリングするデータです。 array_filter()は、値、キー、または両方のキーと値に基づいてフィルタリングできます。
複数のユーザー情報を含む連想配列があり、18歳未満のすべてのユーザーを除外したいとします。
<?php
$users = [
"user1" => ["name" => "Alice", "age" => 25],
"user2" => ["name" => "Bob", "age" => 17],
"user3" => ["name" => "Charlie", "age" => 30]
];
$filtered_users = array_filter($users, function($user) {
return $user["age"] >= 18; // 年齢のみが等しいか等しくなります 18 ユーザー
});
print_r($filtered_users);
?>
出力:
Array
(
[user1] => Array
(
[name] => Alice
[age] => 25
)
[user3] => Array
(
[name] => Charlie
[age] => 30
)
)
上記の例では、 array_filter()関数はarray $ usersを横断し、コールバック関数を使用して18以下のユーザーを除外します。
特定のユーザーから情報を削除するなど、特定のキーに基づいて連想配列をフィルタリングする必要があるとします。
<?php
$users = [
"user1" => ["name" => "Alice", "age" => 25],
"user2" => ["name" => "Bob", "age" => 17],
"user3" => ["name" => "Charlie", "age" => 30]
];
$filtered_users = array_filter($users, function($user, $key) {
return $key != "user2"; // 除外キーはです user2 ユーザー
}, ARRAY_FILTER_USE_BOTH);
print_r($filtered_users);
?>
出力:
Array
(
[user1] => Array
(
[name] => Alice
[age] => 25
)
[user3] => Array
(
[name] => Charlie
[age] => 30
)
)
この例では、 array_filter()はarray_filter_use_bothモードを使用するため、コールバック関数は配列要素の値だけでなくキーにもアクセスできます。これにより、キーに基づいて要素を保持するかどうかを決定できます。
データを処理する場合、null値、 null 、 false 、 0または空の文字列を含む配列に遭遇する場合があります。 array_filter()を使用して、これらの無効なデータを簡単にクリーンアップします。
たとえば、配列にfalseの値を持つ要素を削除します。
<?php
$array = [0, 1, false, 2, "", null, 3];
$filtered_array = array_filter($array); // すべてがデフォルトで削除されます `false` 価値
print_r($filtered_array);
?>
出力:
Array
(
[1] => 1
[3] => 2
[6] => 3
)
array_filter()は、データセットから特定の基準を満たす要素をフィルタリングする必要がある場合、非常に便利なツールです。たとえば、特定の値よりも大きい金額ですべての注文を除外したり、すべてのオンラインユーザーを除外したりするために使用できます。
複雑なデータフィルタリングロジックは、 array_filter()を介してクリーンなコードを使用して実装できます。 foreachループを使用してデータを手動でフィルタリングするのと比較して、 array_filter()により、コードがより明確かつ読みやすくなります。
複数のURLアドレスを含む配列があり、指定されたドメイン名( M66.netなど)を含むURLをフィルタリングする必要があるとします。 array_filter()を使用してparse_url()と協力して、このタスクを完了できます。
<?php
$urls = [
"http://example.com/page1",
"https://m66.net/page2",
"https://m66.net/page3",
"http://anotherdomain.com/page4"
];
$filtered_urls = array_filter($urls, function($url) {
$parsed_url = parse_url($url);
return isset($parsed_url['host']) && $parsed_url['host'] === 'm66.net';
});
print_r($filtered_urls);
?>
出力: