2014-09-21 9 views
0

問題是來自與here一段代碼的聲明(在頁面上的最後一個PHP程序)的說法是:PHP:當它的返回類型是字符串而不是bool時,爲什麼我們在'if'語句中使用stristr()作爲條件?

if (stristr($q, substr($name,0,$len))) {...} 

但根據manualstristr()返回類型爲字符串。它返回一個字符串,而不是一個布爾,所以我們如何在if語句中使用它?

+1

如果'stristr()'返回任何沒有''''的字符串,那麼它被認爲是'true'。 – MH2K9 2014-09-21 13:38:54

回答

2

PHP,最喜歡的編程語言評估條件表達式(一if語句中的代碼)是truthy布爾表達式:

if (123) 
    echo '123 is true'; 

這將呼應文本,因爲,當它涉及到整型,除了0一切都是真實的(或如truthy它也被稱爲)。
您可以查看官方文檔here以獲得關於哪些類型/值評估爲真,哪些爲錯誤的詳細概述。

當然,在strstrstristr,當沒有子被發現的情況下,該功能實際上將返回false,所以返回值的類型和值檢查的情況並不少見:

if (stristr($string, 'needle') !== false) 
    echo 'The needle was found'; 
+1

像大多數**動態**鍵入語言,而不是C,C#,Java ... – 2014-09-21 13:40:19

+2

@JuanMendes:在C中,任何非零和非NULL值都爲真:'if(-1)printf(「%d是真的\ n「,-1);'同樣適用 – 2014-09-21 13:42:17

+0

非常感謝,尤其是鏈接到文檔,因爲這經常讓我感到困惑。 – Solace 2014-09-21 13:43:48

1

從鏈接您發佈

返回值

返回匹配的子字符串。如果找不到針,返回FALSE。

當它返回一個字符串,PHP認爲非空字符串在使用時if語句

+1

nit-pick,但PHP的真值表相當混亂:'if(「0」== false)'將評估爲true。最壞的情況是if(「php」== 0)'也是如此,就像if(「php」== true)是真的一樣......:-S – 2014-09-21 13:53:17

+0

非常感謝! – Solace 2014-09-21 14:00:14

相關問題