column

ITコラム

mv15530

プログラミングノウハウ

2019.03.27

PHP【 配列 】array_filter でフィルター

PHP には、配列の要素をフィルタリング( ある条件に合致した要素のみを抽出 )できる array_filter 関数があります。
今回は array_filter 関数の使用方法を紹介します。

配列についてはこちらの記事もご参照下さい。

PHP【 配列 】複数の値を保持するデータ構造
PHP【 配列 】配列にデータを追加
PHP【 配列 】配列からデータを削除
PHP【 配列 】count で要素数を取得
PHP【 配列 】配列のソート
PHP【 連想配列 】キーでデータを特定
PHP【 多次元配列 】配列の中に配列
PHP【 配列 】配列内のデータ検索
PHP【 配列 】要素を比較
PHP【 配列 】配列の結合
PHP【 配列 】in_array で値の存在チェック
PHP【 配列 】array_map で一括処理
PHP【 配列 】キーを取得
PHP【 配列 】array_filter でフィルター(本ページ)
PHP【 配列 】array_column で同一キーの値を取得
PHP【 配列 】foreach でループ処理
PHP【 配列 】array_unique で重複した値を削除
PHP【 配列 】便利な関数

本サイトでは XAMPP( ザンプ )という開発環境を使用しています。
XAMPP のインストール方法や起動方法については以下の記事をご参照下さい。
PHP【 開発環境 】XAMPP インストール
PHP【 開発環境 】XAMPP の使い方

なお、未経験からITエンジニアへの就職に興味がある方や未経験からプログラミングを効率よく学びたいと考えている方は、就職率98.3%で受講料無料のプログラミングスクールプログラマカレッジもおすすめです。

最終更新日:2019年3月27日

1. array_filter 関数

array_filter 関数は、配列の要素をフィルタリングするための関数です。

実行すると、指定した条件に合致する要素のみを抽出した配列が返ります。

array_filter 関数は 次のように記述して使用します。

array_filter($array[, 関数[, オプションフラグ]]);

第 1 引数には、対象となる配列を指定します。

第 2 引数には、特定の条件にマッチするか否かを true 又は false で返す関数を指定します。

第 3 引数には、何をフィルタリングするのかを次のフラグで指定することができます( 指定しない場合は値のみがフィルタリングされます )。
・ARRAY_FILTER_USE_KEY:キーのみをフィルタリングする
・ARRAY_FILTER_USE_BOTH:値とキーの両方をフィルタリングする

▲目次へ戻る

2. array_filter のサンプル

array_filter 関数を使用して 配列内の要素を「 160未満 」でフィルタリングします。

下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)

<pre>
<?php

  function less_160( $num ){

    return($num < 160);

  }

  $ary = array(168, 155, 161, 158, 160, 153, 163, 170, 157);

  print_r(array_filter($ary, "less_160"));

?>
</pre>

PHP 配列 array_filter プログラマカレッジ

関数 less_160 は、160 未満の場合は true を、それ以外は false を返す関数です。

「 array_filter($ary, “less_160”) 」という記述で、$ary 内の各要素の値が 160 未満か否かの判定が行われ、160 未満の値のみを格納した配列が返ります。

print_r 関数や <pre> ~ </pre> についてはprint_r で出力をご参照下さい。

▲目次へ戻る

3. キーをフィルタリング

array_filter 関数に 配列とフィルタリングを行う関数のみを指定すると 要素の値がフィルタリングされますが、array_filter 関数の第 3 引数にフラグを指定すると、要素のキーをフィルタリングすることができます。

下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)

<pre>
<?php

  function age_14( $key ){

    return(false !== strpos( $key, "_14" ));

  }

  $ary = array("MA_13"=>168, "KS_15"=>155, "YF_14"=>161, "AM_14"=>158, "MK_15"=>160, "RG_13"=>153, "EI_13"=>163, "MN_14"=>170, "RW_15"=>157);

  print_r(array_filter($ary, "age_14", ARRAY_FILTER_USE_KEY));

?>
</pre>

PHP 配列 array_filter プログラマカレッジ

関数 age_14 で使用されている strpos 関数は、文字列内で特定の文字列が最初に現れる場所をインデックス番号で返す関数で、特定の文字列が存在しない場合は false が返ります。
よって、上のサンプルの関数 age_14 は、文字列に「 _14 」が含まれる場合は true を、それ以外は false を返す関数です。

「 array_filter($ary, “age_14”, ARRAY_FILTER_USE_KEY) 」という記述で、$ary 内の各要素のキーに「 _14 」が含まれるか否かの判定が行われ、「 _14 」が含まれるキーの要素のみを格納した配列が返ります。

上のサンプルは array_filter 関数の第 3 引数に「 ARRAY_FILTER_USE_KEY 」を指定しているので フィルタリングの対象がキーのみとなっていますが、「 ARRAY_FILTER_USE_BOTH 」を指定すると、キーと値の両方がフィルタリングの対象となります。

print_r 関数や <pre> ~ </pre> についてはprint_r で出力をご参照下さい。

▲目次へ戻る

無料説明会

SHARE

最新記事

無料説明会に参加してみる

INTERNOUS,inc. All rights reserved.

無料オンライン説明会へ