在其他程式語言裡, 有另外的值可用來判斷 是/否, 如 1 代表 TRUE, 0 代表 FALSE.
PHP 也支援/接受其他型別的變數用來在程式中判斷, 以下的變數值就等於 FALSE:
- 整數型數的 0 (零)
- 浮點數的 0.0
- 空字串, 及字串 "0"
- 空陣列
- 不含成員變數的物件 (僅指 PHP 4)
- NULL 值 (包括未給值的變數)
- SimpleXML objects created from empty tags
而非上述提到的變數值則為 TRUE.
但這有時候會出問題, 某些函式, 如 strpos,
是用來在 A 字串尋找是否含有 B 字串, 若 B 字串含在 A 字串內, 則傳回 B字串在 A 字串的位置,
若 B 字串不在 A 字串中, 則傳回 FALSE; 而在 PHP 中, 字串的第一字位置是 0, 則我們若按一般的寫法,
可能會得不到我們想要的結果.
例如(請別理會程式的實用性...)
<?php $A = 'OpenSesame'; $B = 'Open'; if(strpos($A,$B)==FALSE) echo 'where are you'; else echo 'gotcha'; ?>
其結果會顯示 where are you, 原因就在於 $B 在 $A 的起始位置, 而這位置的值是 0, 等於 FALSE, 但 $B 確實在 $A 之中啊.
這時就要用到強制性的判別運算 ===(三個等號) 和 !==(一個驚嘆號加二個等號)
=== 用來判別不僅值相同, 連型別也必須一樣, 反之則用 !==
所以上例要將 == 換為 ===, 如下:
<?php if(strpos($A,$B)===FALSE) echo 'where are you'; else echo 'gotcha'; ?>
這樣得到的結果就會是正確的 gotcha 了.
很好,搞了很久都找到答案,終於解決了,謝謝你
回覆刪除