【PHP】配列の要素をフィルタリングする方法

PHPで配列の要素をフィルタリングする際には、array_filter()関数を使用するのが一般的です。この関数を使うことで、条件に合致する要素だけを抽出した新しい配列を作成することができます。この記事では、array_filter()関数の基本的な使い方から、キーを使用した高度なフィルタリング方法までを紹介します。

array_filter()関数の基本的な使い方

array_filter()関数は、指定したコールバック関数に基づいて配列の各要素を評価し、条件に合う要素だけを返すために使用されます。以下のコード例では、配列から偶数のみをフィルタリングしています。

$array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

// 偶数のみをフィルタリングするコールバック関数
$filteredArray = array_filter($array, function($value) {
    return $value % 2 === 0;
});

print_r($filteredArray);

このコードを実行すると、$filteredArrayには偶数の要素である[2, 4, 6, 8, 10]が含まれます。

キーを保持してフィルタリングする方法

array_filter()関数を使用すると、配列のキーを保持しながらフィルタリングを行うことができます。デフォルトでは、値に基づいてフィルタリングされますが、キーも使用する場合には、ARRAY_FILTER_USE_KEYを指定することができます。

$array = [
    'a' => 1,
    'b' => 2,
    'c' => 3,
    'd' => 4,
    'e' => 5
];

// 値が偶数の要素をフィルタリング
$filteredArray = array_filter($array, function($value) {
    return $value % 2 === 0;
});

print_r($filteredArray);

このコードでは、配列から値が偶数である要素のみがフィルタリングされ、結果として[‘b’ => 2, ‘d’ => 4]が返されます。

値とキーを組み合わせた高度なフィルタリング

さらに高度なフィルタリングを行う場合には、ARRAY_FILTER_USE_BOTHを使用して、値とキーの両方を考慮したフィルタリングを行うことができます。次の例では、値が15より大きく、かつキーに’a’が含まれている要素だけをフィルタリングします。

$array = [
    'apple' => 10,
    'banana' => 20,
    'cherry' => 30,
    'date' => 40
];

// 値とキーを使ってフィルタリングする
$filteredArray = array_filter($array, function($value, $key) {
    return $value > 15 && strpos($key, 'a') !== false;
}, ARRAY_FILTER_USE_BOTH);

print_r($filteredArray);

この例の結果として、[‘banana’ => 20, ‘date’ => 40]がフィルタリングされます。

まとめ

array_filter()関数を使うことで、PHPの配列から特定の条件に合致する要素のみを抽出することが可能です。単純な値に基づくフィルタリングから、キーと値を組み合わせた複雑な条件まで、さまざまなシナリオで活用できる便利な関数です。PHPでの配列操作において、array_filter()をマスターしておくと、柔軟なデータ処理が可能になります。