Code Fix

中級strpos()が0を返すと if文でfalseと同じに扱われてしまう › パターン1

strpos()が0を返すと if文でfalseと同じに扱われてしまう

strpos()は文字列が先頭(添字0)で見つかった場合、戻り値の0を返します。

 1  <?php
 2  $haystack = "hello world";
 3  $pos = strpos($haystack, "hello");
 4  if ($pos ___ false) {
              ^
 5      echo "not found";
 6  } else {
 7      echo "found";
 8  }
出力: not found期待: found (エラーにはなりません、実際は先頭=添字0で見つかっています)

空欄を埋めて実行を通す

広告
広告スロット(未設定)

strpos()が0を返すと if文でfalseと同じに扱われてしまう

if ($pos)のように真偽値として直接判定すると、0はfalseとして扱われるため、先頭で見つかったのに「見つからなかった」と誤判定します。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)