(PHP 4 >= 4.0.6, PHP 5)
array_filter — コールバック関数を使用して、配列の要素をフィルタリングする
callback
関数によりフィルタ処理が行われた array
の全ての要素を含む配列を返します。
callback
関数が true を返した場合、
array
の現在の値が結果の配列に入ります。
array
が連想配列の場合、
キーは保存されます。
array
処理する配列。
callback
使用するコールバック関数。
コールバック関数が与えられなかった場合、
array
のエントリの中で FALSE
と等しいもの
(boolean
への変換 を参照ください) がすべて削除されます。
flag
引数として、何を callback
に送るのかを決めるフラグ。
ARRAY_FILTER_USE_KEY
- 値ではなく、キーだけを
callback
の引数として渡す
ARRAY_FILTER_USE_BOTH
- 値だけではなく、値とキーの両方を
callback
の引数として渡す
フィルタリングされた結果の配列を返します。
バージョン | 説明 |
---|---|
5.6.0 |
オプションのパラメータ flag と、定数
ARRAY_FILTER_USE_KEY および
ARRAY_FILTER_USE_BOTH が追加されました。
|
例1 array_filter() の例
<?php
function odd($var)
{
// 渡された整数が奇数かどうかを返します
return($var & 1);
}
function even($var)
{
// 渡された整数が偶数かどうかを返します
return(!($var & 1));
}
$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array(6, 7, 8, 9, 10, 11, 12);
echo "Odd :\n";
print_r(array_filter($array1, "odd"));
echo "Even:\n";
print_r(array_filter($array2, "even"));
?>
上の例の出力は以下となります。
Odd : Array ( [a] => 1 [c] => 3 [e] => 5 ) Even: Array ( [0] => 6 [2] => 8 [4] => 10 [6] => 12 )
例2 callback
がない
array_filter()
<?php
$entry = array(
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => ''
);
print_r(array_filter($entry));
?>
上の例の出力は以下となります。
Array ( [0] => foo [2] => -1 )
例3 array_filter() で
flag
を使う例
<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4];
var_dump(array_filter($arr, function($k) {
return $k == 'b';
}, ARRAY_FILTER_USE_KEY));
var_dump(array_filter($arr, function($v, $k) {
return $k == 'b' || $v == 4;
}, ARRAY_FILTER_USE_BOTH));
?>
上の例の出力は以下となります。
array(1) { ["b"]=> int(2) } array(2) { ["b"]=> int(2) ["d"]=> int(4) }
配列の内容がコールバック関数内で変更された場合 (たとえば要素が追加されたり削除されたりなど) のこの関数の挙動は未定義です。