萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> 新手對PHP if 判斷式語句可能犯的拼寫錯誤

新手對PHP if 判斷式語句可能犯的拼寫錯誤

 寫這篇的主因是上週追一個 typo error, 但是這是正確標準語法, 不會產生 syntax error, 所以不好追, 再此做個記錄, 之後可以先 grep 看看是不是這種 typo error 造成的. XD

PHP if 判斷式可能犯的拼寫錯誤

if 判斷式 寫法, 有一個很常見的, 但是那不是 typo error, 也很常這樣子寫的, 是 “=”、”==”、”===”.
范例
View Raw Code?

<?php
if ($a = ‘a’)
echo ‘這行會印出來, 因為 $a = “a”, 而 a 不是 0 / false, 所以會恆為 true’;
if ($a == ‘b’)
echo ‘這行不會被印出來, 因為 $a 等於 “a”, 不等於 “b”‘;
if ($a === true)
echo ‘這行不會被印出來, 因為 $a 型態不是 true. (當然主要是值不對, 但是在此先不討論)’;
?>

當程式裡面, 不小心把 等號刪掉一個, 就會引發很大的悲劇. (syntax 檢查不出來, 是正確寫法)

上述那個是常見的, 也很難追的, 但是下述的是寫第一次遇見的~ (把 “!=” 打成 “=!”, 這個應該 9成9 是 typo error.)
View Raw Code?

<?php
$a = ‘b’;
if ($a != ‘a’)
echo $a; // 這行會印出 ‘b’, 這是本來要做的事情.
// 當 != 打成 =! 的話, 就會造成悲劇.
if ($a =! ‘a’)
echo ‘這行不會被印出來’;
var_dump($a); // 印出 false
?>

問題追蹤拆解

一步一步分解 $a =! ‘a’
$a = !’a’ // ‘a’ 的 boolean 是 true, !true = false.
$a = false
所以 if ($a = false), 就永遠不會落入此行, syntax 也是合法的.

註: 以後 Debug 除了 “=”、”==”、”===” 外, 要多注意看看 “!=” 和 “=!” 的寫法.

copyright © 萬盛學電腦網 all rights reserved