溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php小白容易出現(xiàn)的 strpos 邏輯錯(cuò)誤

發(fā)布時(shí)間:2020-07-31 21:13:04 來(lái)源:網(wǎng)絡(luò) 閱讀:468 作者:wangyeshejiyuan 欄目:web開發(fā)
  1. 先來(lái)看strpos的用法:


    (PHP 4, PHP 5, PHP 7)

    strpos查找字符串首次出現(xiàn)的位置

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

    返回 needle 存在于 haystack 字符串起始的位置(獨(dú)立于 offset)。同時(shí)注意字符串位置是從0開始,而不是從1開始的。

    如果沒找到 needle,將返回 FALSE。(請(qǐng)注意這種情況下的返回值)


2. 實(shí)例說(shuō)明(產(chǎn)生問題的錯(cuò)誤代碼

    

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

 新手容易犯的就是對(duì)于if的真值判斷,由于該函數(shù)在沒有找到對(duì)應(yīng)字符的情況下,返回值為false,所以就會(huì)出現(xiàn)這種判斷來(lái)處理找到和沒找到的情況。由這個(gè)例子的結(jié)果可以看出,字符‘t’其實(shí)是存在的,而且也被找到了,并且返回了該字符的位置值,即0,因?yàn)?為假值,程序就會(huì)執(zhí)行else中代碼,導(dǎo)致程序運(yùn)行結(jié)果與預(yù)期結(jié)果不一致,從而產(chǎn)生了所謂的邏輯錯(cuò)誤。


3. 正確代碼(解決方法)

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


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI