PHPのarray_filter()
関数は、配列から、フィルタリングで、特定の要素を抽出する組み込み関数。
フィルタリングには、ユーザー定義関数を用いることができる。
定義
配列型 array_filter( 配列型 $input[, コールバック $callback] );
パラメータ
- 配列型 $input
フィルタリングする配列。
- コールバック $callback
フィルタリングに用いるユーザー定義関数を指定。
戻り値
配列。
フィルタリングで抽出した配列要素を格納した配列。
構文
配列から、「FALSE」と同等でない値の要素を抽出
配列 = array_filter( フィルタリングする配列 );
「フィルタリングする配列」の配列から、「FALSE」と同等でない値の配列要素を抽出し、「配列」に格納。
ユーザー定義関数でフィルタリングし、配列から特定の要素を抽出
配列 = array_filter( フィルタリングする配列, コールバック関数 );
「フィルタリングする配列」の配列から、「コールバック関数」に指定した関数でフィルタリングし抽出した配列要素を、「配列」に格納。
サンプル
配列から、「FALSE」と同等でない値の要素を抽出
コールバック関数を指定しない場合、「FALSE」と同等の値は抽出しない。
<pre>
<?php
$varArrayA = array( '文字列', '', FALSE, NULL, 0, 1, -1 );
$varArrayB = array_filter( $varArrayA );
print_r( $varArrayB );
?>
</pre>
<?php
$varArrayA = array( '文字列', '', FALSE, NULL, 0, 1, -1 );
$varArrayB = array_filter( $varArrayA );
print_r( $varArrayB );
?>
</pre>
↓↓↓出力結果↓↓↓
Array
(
[0] => 文字列
[5] => 1
[6] => -1
)
(
[0] => 文字列
[5] => 1
[6] => -1
)
ユーザー定義関数でフィルタリングし、配列から特定の要素を抽出(1)
配列から、値が「70」以上の要素を抽出。
<pre>
<?php
function filter70( $var ) {
return ( $var >= 70 ) ? TRUE : FALSE;
}
$varArrayA = array( 85, 63, 94, 59, 70, 100, 62 );
$varArrayB = array_filter( $varArrayA, filter70 );
print_r( $varArrayB );
?>
</pre>
<?php
function filter70( $var ) {
return ( $var >= 70 ) ? TRUE : FALSE;
}
$varArrayA = array( 85, 63, 94, 59, 70, 100, 62 );
$varArrayB = array_filter( $varArrayA, filter70 );
print_r( $varArrayB );
?>
</pre>
↓↓↓出力結果↓↓↓
Array
(
[0] => 85
[2] => 94
[4] => 70
[5] => 100
)
(
[0] => 85
[2] => 94
[4] => 70
[5] => 100
)
ユーザー定義関数でフィルタリングし、配列から特定の要素を抽出(2)
配列から、値が奇数である要素を抽出。
<pre>
<?php
function filterOdd( $var ) {
return( $var & 1 );
}
$varArrayA = array( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 );
$varArrayB = array_filter( $varArrayA, filterOdd );
print_r( $varArrayB );
?>
</pre>
<?php
function filterOdd( $var ) {
return( $var & 1 );
}
$varArrayA = array( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 );
$varArrayB = array_filter( $varArrayA, filterOdd );
print_r( $varArrayB );
?>
</pre>
↓↓↓出力結果↓↓↓
Array
(
[1] => 1
[3] => 3
[5] => 5
[7] => 7
[9] => 9
)
(
[1] => 1
[3] => 3
[5] => 5
[7] => 7
[9] => 9
)
ユーザー定義関数でフィルタリングし、配列から特定の要素を抽出(3)
配列から、値が偶数である要素を抽出。
<pre>
<?php
function filterEven( $var ) {
return( !( $var & 1 ) );
}
$varArrayA = array( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 );
$varArrayB = array_filter( $varArrayA, filterEven );
print_r( $varArrayB );
?>
</pre>
<?php
function filterEven( $var ) {
return( !( $var & 1 ) );
}
$varArrayA = array( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 );
$varArrayB = array_filter( $varArrayA, filterEven );
print_r( $varArrayB );
?>
</pre>
↓↓↓出力結果↓↓↓
Array
(
[0] => 0
[2] => 2
[4] => 4
[6] => 6
[8] => 8
)
(
[0] => 0
[2] => 2
[4] => 4
[6] => 6
[8] => 8
)
ユーザー定義関数でフィルタリングし、連想配列から特定の要素を抽出
連想配列から、値が「70」以上の要素を抽出。
<pre>
<?php
function filter70( $var ) {
return ( $var >= 70 ) ? TRUE : FALSE;
}
$varArrayA = array(
'Ichirou' => 85,
'Hanako' => 33,
'Tarou' => 69,
'Tubasa' => 100,
'Sakura' => 70
);
$varArrayB = array_filter( $varArrayA, filter70 );
print_r( $varArrayB );
?>
</pre>
<?php
function filter70( $var ) {
return ( $var >= 70 ) ? TRUE : FALSE;
}
$varArrayA = array(
'Ichirou' => 85,
'Hanako' => 33,
'Tarou' => 69,
'Tubasa' => 100,
'Sakura' => 70
);
$varArrayB = array_filter( $varArrayA, filter70 );
print_r( $varArrayB );
?>
</pre>
↓↓↓出力結果↓↓↓
Array
(
[Ichirou] => 85
[Tubasa] => 100
[Sakura] => 70
)
(
[Ichirou] => 85
[Tubasa] => 100
[Sakura] => 70
)