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

WBOY
Freigeben: 2016-06-23 13:09:45
Original
931 Leute haben es durchsucht

  • 先来看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 不存在';    }?>
    Nach dem Login kopieren

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


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

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


    Quelle:php.cn
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage