php小白容易出现的 strpos 逻辑错误
Jun 23, 2016 pm 01:09 PM
先来看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 不存在'; }?>

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

11 meilleurs scripts de raccourcissement d'URL PHP (gratuit et premium)

Travailler avec les données de session Flash dans Laravel

6 compétences supplémentaires que chaque développeur PHP devrait avoir

Misque de réponse HTTP simplifié dans les tests Laravel

Construisez une application React avec un Laravel Back End: Partie 2, React

Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST

12 meilleurs scripts de chat PHP sur Codecanyon
