PHPで配列の中に値があるか調べる関数 array_search() in_array() array_keys() 比較 - Webプログラマー+WebデザイナーなZARU日記
上記から。ありがとうございます。
array_search()
array_search() は、配列の中に指定した値があった場合、
その配列キーを返す。
複数の値がある場合は、先頭の配列キーのみが返す。
また、見つからなかった場合は bool型のFALSEを返すが、
場合によっては 0 や "" といった値を返す事もあるらしい。
<?php if(!array_search($searchStr,$array)){ print 'None'; }else{ print 'Hit'; } ?>
とすると、もし一番最初の配列に目的の値があった場合 0 を返してしまい、
Noneが表示されててしまう。
そのため、PHPではなるべく型のチェックをする
'===''!=='を使用するようにすると良い。
<?php if(array_search($searchStr,$array) === FALSE)){ print 'None'; }else{ print 'Hit'; } ?>
in_array()
in_array() は、配列の中に指定した値があった場合、TRUEを、
なかった場合には、FALSEを返す。
なので、中に入っているかどうかのチェックだけでよければ、
array_search() よりも in_array() を使った方が混乱が少ない。
array_keys()
array_keys() は、array_search() と in_array() とは引数の順番が違い、
「配列」「検索値」の順になる。2番目の引数はオプションで、
指定しなかった場合は配列全てのキーを返す。
また、array_search() との違いは、
重複した値があった場合でも全てのキーを配列にして返す。
配列のキーを使いたい場合は、array_keys() を使用した方がメリットは高い。
まとめると
メソッド | 引数 | 返り値 |
---|---|---|
array_search | 1.検索値 2.配列 | ヒットした最初の値 |
in_array | 1.検索値 2.配列 | TRUE or FALSE |
array_keys | 1.配列 2.検索値 | ヒットした全てのキーの配列 |
となる。使い分けると便利かもしれない。