array_filter()

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>

↓↓↓出力結果↓↓↓

Array
(
    [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>

↓↓↓出力結果↓↓↓

Array
(
    [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>

↓↓↓出力結果↓↓↓

Array
(
    [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>

↓↓↓出力結果↓↓↓

Array
(
    [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>

↓↓↓出力結果↓↓↓

Array
(
    [Ichirou] => 85
    [Tubasa] => 100
    [Sakura] => 70
)

スポンサード リンク

カテゴリー: PHP, コールバック, 取得, 組み込み関数, 配列 タグ: パーマリンク