array_filter
コールバック関数を使用して、配列の要素をフィルタリングする
引用元:https://www.php.net/manual/ja/function.array-filter.php
- 第三引数のflagを指定しない場合、第一引数に指定された配列のvalueをコールバック関数で使用する
コールバック関数
- 関数を引数として受け取れる関数を呼ぶ
- 参考
サンプルコード1
- flgを指定しない場合
// 金額情報をもつ連想配列を定義する
$prices = [
'priceA' => 100,
'priceB' => 200,
'priceC' => 300,
'priceD' => 400,
'priceE' => 500,
];
// 300円以上の値を取得する
$result = array_filter($prices, function($price) {
return $price >= 300;
});
出力結果
[
'priceC' => (int) 300,
'priceD' => (int) 400,
'priceE' => (int) 500
]
サンプルコード2
- flgにARRAY_FILTER_USE_KEYを指定した場合
// 金額情報をもつ連想配列を定義する
$prices = [
'priceA' => 100,
'priceB' => 200,
'priceC' => 300,
'priceD' => 400,
'priceE' => 500,
];
// $pricesのkeyと"priceC"という文字列が一致する値を取得する
$result = array_filter(
$prices,
function($price) {
return $price == 'priceC';
},
ARRAY_FILTER_USE_KEY
);
出力結果
[
'priceC' => (int) 300
]
サンプルコード3
-
flgにARRAY_FILTER_USE_BOTHを指定した場合
- array_filterの第二引数に指定するコールバック関数の第一引数は、array_filterの第一引数($prices)の値を参照する
- そのため、第二引数のコールバック関数に指定している引数の名前は、第一引数を**$valueとし、第二引数を$key**とした
// 金額情報をもつ連想配列を定義する
$prices = [
'priceA' => 100,
'priceB' => 200,
'priceC' => 300,
'priceD' => 400,
'priceE' => 500,
];
// $pricesのkeyと"priceD"という文字列が一致し、かつ、valueの値が400の値を取得する
$result = array_filter(
$prices,
function($value, $key) {
return $key == 'priceD' && $value == 400;
},
ARRAY_FILTER_USE_BOTH
);
出力結果
[
'priceD' => (int) 400
]