phpのstrposの挙動を確認する

phpのstrpos関数を動きを確認したのでメモ

strposは

文字列内の部分文字列が最初に現れる場所を見つける

とあります
http://php.net/manual/ja/function.strpos.php

使い方は


echo strpos("abcdefg", "c");
// 2

のように、文字列”abcdefg”のなかに”c”が何番目(0始まり)にあるかを返します
もしなければ、FALSEが返ります

よく間違えやすいのが、文字”a”がなければ..のとき


var_dump(false == strpos($str, 'a'));
// true

というコードです

これはaが0番目にあるため、strposは0を返す
phpでは false == 0 は true になります
== だけだと型をみないので
=== で型も見て比較すると大丈夫です


var_dump(false == 0);
// true

var_dump(false === 0);
// false

strposでは型もみて比較しましょう


// もし文字がなければ
if (false === strpos($str, 'a')) ...

// もし文字があるなら
if (false !== strpos($str, 'a')) ...

// 3項演算子でも===で
$str = (false !== strpos($str, 'a') ? 'ある' : 'ない';

3項演算子のときにうっかりしそうです

カテゴリーphp

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください