現在の位置: ホーム> 最新記事一覧> PHPのarray_filter関数を使用して、すべての非ストリング要素をアレイ内でフィルタリングする方法は?

PHPのarray_filter関数を使用して、すべての非ストリング要素をアレイ内でフィルタリングする方法は?

M66 2025-07-18

PHP開発では、今日のことなど、さまざまなタイプの配列から特定の種類のデータを除外する必要性に遭遇することがよくあります。現時点では、 array_filter()が役立ちます。

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"]
];

私たちの目標は、すべての非弦の値を除外し、文字列要素のみを保存することです。

方法1: is_stringをコールバック関数として使用します

$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'));

方法2:匿名関数を使用して、より複雑な判断を達成する

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開発における配列データのクリーニングと処理に非常に適しています。