PR

PHPで配列の値を検索する方法|完全一致と部分一致のプログラム例

スポンサーリンク

PHPでプログラムを作成していて、配列の中に一致する文字列が存在するかどうかを確認したい場合はないでしょうか。

そんなとき、ループ文を作成して配列を上からひとつひとつチェックしていけば確認することはできますが、PHPでは、配列の値を簡単に検索する関数が用意されていますので、その方法について解説したいと思います。

スポンサーリンク

array_search 関数で配列を検索する方法

array_search 関数を使って配列の値を検索するプログラム例です。

<?php
$array = ['JAVA', 'PHP', 'Python'];
$result = array_search('PHP', $array);
echo $result;

プログラム実行結果:

1

プログラム解説

上記のプログラムについて解説したいと思います。

$array = [‘JAVA’, ‘PHP’, ‘Python’];

この部分で配列を生成していますが、内容は次のようになります。

  • $array[0] : ‘JAVA’
  • $array[1] : ‘PHP’
  • $array[2] : ‘Python’
$result = array_search(‘PHP’, $array);

この部分で配列「$array」の中に「PHP」という文字列が含まれているかどうかを検索しております。

array_search(検索したい文字列, 検索したい配列);

関数 array_search は、検索したい文字列が配列の中にあった場合は、一致した値のインデックス値を返却します。検索したい文字列が配列の中になかった場合は、「false」を返却します。上記のプログラムでは、配列の2番めが一致するので、結果はそのインデックス値である「1」となります。

関数 array_search の使用で注意すべきなのは「検索したい文字列が配列」は配列の値と完全一致である必要があります。このarray_searchを使った方法では部分一致は検索することはできません

例えば、この場合「PHP」の文字列の一部である「HP」で検索をかけても、一致する値はなかったということで「false」が返却されます。部分一致を検索する場合は、preg_grep という関数を使用しますが、後ほど解説します。

array_search 関数は連想配列も検索できる?

array_search 関数で配列の検索をすることができることがわかりましたが、連想配列についてはどうなのでしょうか。結論を言うと、この関数は連想配列にも使用することができます。

<?php 
$array = array('key1'=>'JAVA','key2'=>'PHP','key3'=>'Python');
$result = array_search('PHP', $array);
echo $result;

プログラム実行結果:

key2

プログラム解説

それでは、上記のプログラムについて解説します。

$array = array(‘key1’=>’JAVA’,’key2’=>’PHP’,’key3’=>’Python’);

こちらの部分で連想配列の宣言をしていますが、内容は次のようになります。

  • $array[‘key1’] : ‘JAVA’
  • $array[‘key2’] : ‘PHP’
  • $array[‘key3’] : ‘Python’
$result = array_search(‘PHP’, $array);

array_search 関数を使って「PHP」という文字列を検索していますが、結果は一致する値のキーである「key2」が表示されます。

preg_grep 関数で部分一致を検索する方法

array_search 関数では完全一致しか検索することができませんでしたが、今度は部分一致を検索するプログラム例です。

<?php
$array = ['JAVA', 'Python', 'PHP', 'Python'];
$result = preg_grep('/yth/', $array);
print_r($result);

プログラム実行結果:

Array
(
    [1] => Python
    [3] => Python
)

プログラム解説

上記のプログラムについて解説したいと思います。

$array = [‘JAVA’, ‘Python’, ‘PHP’, ‘Python’];

この部分で配列「$array」を宣言していますが、「Python」という文字列を2つ入れております。内容は次のようになります。

  • $array[0] : ‘JAVA’
  • $array[1] : ‘Python’
  • $array[2] : ‘PHP’
  • $array[3] : ‘Python’
$result = preg_grep(‘/yth/’, $array);

この部分で preg_grepという関数を使って、配列「$array」の中に「yth」という文字列が部分一致で含まれているかどうかを検索しております。

preg_grep(‘/検索したい文字列/’, 検索する配列)

preg_grep 関数は一致する文字列が見つかった場合は、検索する配列のその部分だけを配列で返却します。一致する値がなかった場合は、「false」を返します。

このプログラムの場合は、配列の2番目と4番目の値が部分一致したので、要素が2つの配列が結果として返却されております。

 

 

php
スポンサーリンク
シェアする
-をフォローする
プログラミングのメモ

コメント