問題
phpで配列の中を検索して抽出するには?
解決策
「array_filter」で該当する値だけに加工した配列に整形することができます。
必要な情報のみを持ったデータに整形する
配列を検索して抽出することで、必要な情報のみを持ったデータを扱うことができます。
phpで配列の中を検索して抽出する方法をご紹介します。
「array_filter」を使用する。
「array_filter」を使用することで、該当する値だけに加工した配列に整形することができます。
function filters( $var ) {
/*
配列内の各値($var)を一つずつ参照して、
条件に合うかどうかを判定し、
合えばTRUE、合わなければFALSEをreturnで返す
*/
}
$arrays = array(
// 配列の内容
);
$filter_array = array_filter( $arrays, 'filters' );
- 配列をあらかじめ用意します。
- 「array_filter( 配列, ‘関数名’ )」で実行します。
- 「function 関数( $var ){ … }」で関数を作成します。
関数には引数を一つ設定します。 - 関数の処理では、条件を用意し、それに合うかどうかを判定し、最後に「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/
コメント