我需要使用特殊字符作爲我的程序的停止/中斷信號。我正在嘗試'#''&''並且一直收到錯誤。PHP char編碼,#== 0,0 == NULL,#!= NULL
經過一番混亂之後,我發現包括上面所有字符在內的所有字符的數值都是0!我是通過將它們的值與數值進行比較來做到的,因爲起初我認爲它使用了ASCII碼。
等一下,那是不對的,因爲NULL也等於0!但是這些字符絕對不等於NULL!
那麼,PHP使用什麼樣的字符編碼呢?將字符與數字進行比較是不可能的?
在此先感謝!
我需要使用特殊字符作爲我的程序的停止/中斷信號。我正在嘗試'#''&''並且一直收到錯誤。PHP char編碼,#== 0,0 == NULL,#!= NULL
經過一番混亂之後,我發現包括上面所有字符在內的所有字符的數值都是0!我是通過將它們的值與數值進行比較來做到的,因爲起初我認爲它使用了ASCII碼。
等一下,那是不對的,因爲NULL也等於0!但是這些字符絕對不等於NULL!
那麼,PHP使用什麼樣的字符編碼呢?將字符與數字進行比較是不可能的?
在此先感謝!
我只是假設你正在做類似的事情:
var_dump("#" == 0);
// bool(true)
當與數字進行比較時,字符串被轉換爲數字來處理像'123' == 123
這樣的情況。字符串'#'
或實際上幾乎每個非數字字符串都轉換爲0
。
這就是爲什麼還有的===
操作:
var_dump("#" === 0);
// bool(false)
歡迎弱類型語言。
http://www.php.net/manual/en/language.types.type-juggling.php
非常感謝您的洞察!我相信===會幫助我很多! – 2010-12-21 03:56:16
它與ascii或char編碼無關,它只是php隱式轉換而進行比較。
http://www.php.net/manual/en/language.operators.comparison.php
非常感謝您的洞察! – 2010-12-21 03:47:57
當你比較字符串一個整數,字符串將被鑄造爲int,並給予0
您可能需要使用ord:
<?php
$str = "\n";
if (ord($str) == 10) {
echo "\$str is a line feed.\n";
}
?>
非常感謝您的洞察! – 2010-12-21 03:57:05
你能告訴我們你用來確定「#」是否等於0的代碼嗎? – deceze 2010-12-21 03:43:45