派遣のお仕事情報満載!!アドバンティアで求人検索

【PHP】in_arrayを使用時、必ずやっておくべき事とは?

YK
【PHP】in_arrayを使用時、必ずやっておくべき事とは?

in_array関数について

配列の中に特定の値が含まれているか調査するための関数です。この関数は指定した値が配列内に含まれている場合は真(true)を、含まれていない場合は偽(false)を返します。

基本的な使い方

下記のように、in_array関数はPHPで配列に関係する実装をする際に非常に便利な関数です。

コード

$prefecture = ['北海道', '東京', '愛知', '大阪', '沖縄'];
var_dump(in_array('東京', $prefecture));
var_dump(in_array('京都', $prefecture));

実行結果

bool(true)
bool(false)

問題のある使い方

下記のように、想定通りの結果を取得できない場合があります。

コード

$numbers = [0, 1, 2, 3, 4, 5];;
var_dump(in_array(2, $numbers));
var_dump(in_array('大阪', $numbers));

実行結果

bool(true)
bool(true)

in_array関数の基本構文

まずは、in_array関数の基本構文を確認していきます。

in_array(mixed $needle, array $haystack, bool $strict = false): bool
  • 第1引数:検索値(注意:needleが文字列の場合、 比較の際に大文字小文字は区別されます。)
  • 第2引数:配列
  • 第3引数:strictがtrueに設定された場合、 in_array()は、haystackの中のneedleの型も確認します。
  • 戻り値:配列でneedleが見つかった場合はtrue、それ以外の場合はfalseを返します。

原因について

上記の基本構文の通り第3引数は省略した場合、型比較を行いません。

そして、PHPの比較演算子は下記の通り、文字列と数値を比較する場合には、暗黙の型変換により文字列の型変換が行われて0になってしまいます。

$a == $b:型の相互変換をした後で$aが$bに等しい時はTRUE。

解決策

解決策は、だた1つです。下記の通り、第3引数を省略せず『true』を設定することです。

コード

$numbers = [0, 1, 2, 3, 4, 5];;
var_dump(in_array(2, $numbers, true));
var_dump(in_array('大阪', $numbers, true));

実行結果

bool(true)
bool(false)

まとめ

in_array関数の第3引数を省略した場合は、想定通りの結果を取得できない場合がありますので、in_array関数を使用する際は、必ず第3引数に『true』を設定するように心掛けましょう。今回の記事が、みなさんの快適なプログラミングの一翼を担えれば幸いです。

「東三河・西三河で働く!」高時給な派遣求人が満載!

CTA-IMAGE いまあなたは転職活動で困っていませんか? 「こんなに転職活動を頑張っているのに、良い職場に出会えないのだろう?」 そんな悩みがあるなら派遣会社アドバンティアで解決しましょう! 軽作業・工場系・事務系のお仕事が満載!! 高時給!週払い可能!家電付きアパート・マンションを貸し出し♪車・携帯レンタル可能!アドバンティアは充実したサポート体制であなたのご応募をお待ちしております。 TEL面接実施中!!

>> アドバンティア求人検索はこちら <<

このページを評価してください

[kkstarratings force]