問題 × 解決策

phpで配列の中を検索して抽出する方法

  • 2020年08月10日
  • PHP

問題

phpで配列の中を検索して抽出するには?

解決策

「array_filter」で該当する値だけに加工した配列に整形することができます。

 

必要な情報のみを持ったデータに整形する

配列を検索して抽出することで、必要な情報のみを持ったデータを扱うことができます。
phpで配列の中を検索して抽出する方法をご紹介します。

「array_filter」を使用する。

array_filter」を使用することで、該当する値だけに加工した配列に整形することができます。

function filters( $var ) {
	/*
	配列内の各値($var)を一つずつ参照して、
	条件に合うかどうかを判定し、
	合えばTRUE、合わなければFALSEをreturnで返す
	*/
}
$arrays = array(
	// 配列の内容
);
$filter_array = array_filter( $arrays, 'filters' );
  1. 配列をあらかじめ用意します。
  2. array_filter( 配列, ‘関数名’ )」で実行します。
  3. function 関数( $var ){ … }」で関数を作成します。
    関数には引数を一つ設定します。
  4. 関数の処理では、条件を用意し、それに合うかどうかを判定し、最後に「return」でTRUEまたはFALSEを返します。

ポイント!

  • array_filter」は「array_filter( 配列, ‘関数名’ )」で実行できます。
  • 指定した関数に引数を一つ設定しますが、この引数に配列内の各値が渡されて処理されます
  • 指定した関数内で最後にTRUEまたはFALSEを返すことで、TRUEの判定を受けた値のみで配列が整形されます。

記述例:文字列内に”ン”が入っている値のみに配列を整形する。

strpos」で文字列内の特定の文字列が含まれているかどうかを判定し、該当する場合にTRUEを返します。

function filters( $var ) {
	$texts = "ン";
	if( strpos( $var, $texts ) !== FALSE ){
        return TRUE;
    }else{
        return FALSE;
    }
}
$arrays = array(
	'リンゴ',
	'ミカン',
	'ブドウ',
	'マスカット',
	'メロン',
	'パイナップル'
);
$filter_array = array_filter( $arrays, 'filters' );

結果:array( ‘リンゴ’, ‘ミカン’, ‘メロン’ )

ポイント!

  • strpos( 検索の対象とする文字列, 検索キーワード )」により、検索キーワードの文字列が対象の文字列内で現れる位置(0~)を返します。
    そして検索キーワードの文字列が含まれていなければ「FALSE」を返します。

参考ページ

以下のサイトが、より詳しく解説してくれています。

【PHPマニュアル:array_filter:コールバック関数を使用して、配列の要素をフィルタリングする】
https://php.plus-server.net/function.array-filter.html

【PHP 文字列を含むかを調べる | ハックノート】
https://hacknote.jp/archives/57077/

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

2 + 17 =

「問題 × 解決策」
月別アーカイブ一覧

「問題 × 解決策」
月別アーカイブ一覧