Home  >  Article  >  Backend Development  >  php小白容易出现的 strpos 逻辑错误

php小白容易出现的 strpos 逻辑错误

WBOY
WBOYOriginal
2016-06-23 13:09:45927browse

  • 先来看strpos的用法:


  •     (PHP 4, PHP 5, PHP 7)

        strpos ― 查找字符串首次出现的位置

        mixed strpos    ( string $haystack   , mixed $needle   [, int $offset = 0  ] )

        返回 needle 存在于 haystack 字符串起始的位置(独立于 offset)。同时注意字符串位置是从0开始,而不是从1开始的。

        如果没找到 needle,将返回 FALSE。(请注意这种情况下的返回值)


    2. 实例说明(产生问题的错误代码)

        

    <?php    $str = 'this is phper !';        if(strpos($str, 't')){        echo 't 存在';    }else{        echo 't 不存在';    }?>

     新手容易犯的就是对于if的真值判断,由于该函数在没有找到对应字符的情况下,返回值为false,所以就会出现这种判断来处理找到和没找到的情况。由这个例子的结果可以看出,字符‘t’其实是存在的,而且也被找到了,并且返回了该字符的位置值,即0,因为0为假值,程序就会执行else中代码,导致程序运行结果与预期结果不一致,从而产生了所谓的逻辑错误。


    3. 正确代码(解决方法)

    <?php    $str = 'this is phper !';        if(false !== strpos($str, 't')){        echo 't 存在';    }else{        echo 't 不存在';    }?>


    Statement:
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn