SYNCERのロゴ
アイキャッチ画像

array_filter - 配列をフィリタリングする

array_filterは、配列をフィルタリングする関数です。独自のアルゴリズムで不要な要素を取り除けます。

構文

array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )

パラメータ

$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 ) ;
array(3) {
  [0]=>
  int(1)
  [2]=>
  int(3)
  [4]=>
  int(5)
}

コールバック関数の省略

コールバック関数を省略すると、false相当の値が削除されます。

<?php
/*** このコードは編集できます。 ***/

	$array = [ 1, 0, 3, 0, 5, false, "a", "" ] ;

	$response = array_filter( $array ) ;

	var_dump( $response ) ;
array(4) {
  [0]=>
  int(1)
  [2]=>
  int(3)
  [4]=>
  int(5)
  [6]=>
  string(1) "a"
}

コールバック関数の引数

第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 ) ;
array(3) {
  [1]=>
  string(1) "b"
  [3]=>
  string(1) "d"
  [5]=>
  string(1) "f"
}
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年6月21日 (水)
コンテンツを公開しました。