array_filter - 配列をフィリタリングする
array_filterは、配列をフィルタリングする関数です。独自のアルゴリズムで不要な要素を取り除けます。
構文
パラメータ
$array
対象の配列。
$callback
コールバック関数。この関数に配列の各要素が引数として渡され実行される。この関数がfalse相当の値を返した時、その要素は配列から削除される。コールバック関数を省略した場合、配列のfalseに相当する値が全て削除される。
$flag
定数を指定すると、コールバック関数に渡される値を調整できる。デフォルトでは、コールバック関数には値だけが渡される。
- ARRAY_FILTER_USE_KEY
- 値ではなく、キーが引数になる。
- ARRAY_FILTER_USE_BOTH
- 値ではなく、値とキーの両方が引数になる。
返り値
array
元の配列から不要な値を削除した新しい配列。
サンプルコード
<?php
$array = [ 1, 2, 3, 4, 5, 6 ] ;
function callback( $a ) {
// 2で割り切れる場合
if ( $a % 2 ) {
return true ;
// 2で割り切れない場合
} else {
return false ;
}
}
$response = array_filter( $array, "callback" ) ;
デモ
フィルタリング例
配列の中から、2で割り切れる要素だけを残す例です。
<?php
/*** このコードは編集できます。 ***/
$array = [ 1, 2, 3, 4, 5, 6 ] ;
function callback ( $a ) {
// 2で割り切れる場合
if ( $a % 2 ) {
return true ;
// 2で割り切れない場合
} else {
return false ;
}
}
$response = array_filter( $array, "callback" ) ;
var_dump( $response ) ;
コールバック関数の省略
コールバック関数を省略すると、false相当の値が削除されます。
<?php
/*** このコードは編集できます。 ***/
$array = [ 1, 0, 3, 0, 5, false, "a", "" ] ;
$response = array_filter( $array ) ;
var_dump( $response ) ;
コールバック関数の引数
第3引数に定数を指定すると、値ではなくキーでフィルターをかけたりできます。下記は、2で割り切れるインデックス番号だけを残す例です。
<?php
/*** このコードは編集できます。 ***/
$array = [ "a", "b", "c", "d", "e", "f" ] ;
function callback ( $a ) {
// 2で割り切れる場合
if ( $a % 2 ) {
return true ;
// 2で割り切れない場合
} else {
return false ;
}
}
$response = array_filter( $array, "callback", ARRAY_FILTER_USE_KEY ) ;
var_dump( $response ) ;
参考
- PHP: array_filter
- PHPの公式リファレンス。
関連記事
- array_search
- 配列から指定した値を検索する。
- array_reduce
- 配列を簡約化する。
- array_unshift
- 配列の先頭に要素を追加する。
- array_unique
- 配列から重複した値を削除する。
- array_walk
- ユーザー定義の関数を全ての要素に適用する。
- array_walk_recursive
- ユーザー定義の関数を全ての要素に、再帰的に適用する。