夜の歌

プログラミング、音楽、本について緩く書いていきます。

strposのfalseチェックについて

strposで検索対象文字列に検索文字列がない場合、falseが返ってくる。では、falseチェックはどうするか。個人的には、厳密な比較演算子を使うのがベターだと思う。

<? php
$result = strpos('test', 'niku');
if($result === FALSE){
    echo 'FALSEです。';
    exit();
}


他のPHPの関数を使った場合の挙動はどうなるか。 例えば、emptyを使ってstrposの結果が入った変数をチェックした場合。strposは、検索文字列が検索対象文字列の最初にあった場合には0を返すので、emptyのチェック結果はtrueになる。

<? php
// $resultに0は入り、emptyの結果はtrueになる
$result = strpos('test', 't');
if(empty($result)){
    echo 'FALSEです。';
    exit();
}

ちなみに、PHP マニュアルにも似たようなことが書かれている。 https://www.php.net/manual/ja/function.strpos.php