2010-12-21 39 views
0

我需要使用特殊字符作爲我的程序的停止/中斷信號。我正在嘗試'#''&''並且一直收到錯誤。PHP char編碼,#== 0,0 == NULL,#!= NULL

經過一番混亂之後,我發現包括上面所有字符在內的所有字符的數值都是0!我是通過將它們的值與數值進行比較來做到的,因爲起初我認爲它使用了ASCII碼。

等一下,那是不對的,因爲NULL也等於0!但是這些字符絕對不等於NULL!

那麼,PHP使用什麼樣的字符編碼呢?將字符與數字進行比較是不可能的?

在此先感謝!

+0

你能告訴我們你用來確定「#」是否等於0的代碼嗎? – deceze 2010-12-21 03:43:45

回答

2

我只是假設你正在做類似的事情:

var_dump("#" == 0); 
// bool(true) 

當與數字進行比較時,字符串被轉換爲數字來處理像'123' == 123這樣的情況。字符串'#'或實際上幾乎每個非數字字符串都轉換爲0

這就是爲什麼還有的===操作:

var_dump("#" === 0); 
// bool(false) 

歡迎弱類型語言。
http://www.php.net/manual/en/language.types.type-juggling.php

+0

非常感謝您的洞察!我相信===會幫助我很多! – 2010-12-21 03:56:16

1

當你比較字符串一個整數,字符串將被鑄造爲int,並給予0

您可能需要使用ord

<?php 
$str = "\n"; 
if (ord($str) == 10) { 
    echo "\$str is a line feed.\n"; 
} 
?> 
+0

非常感謝您的洞察! – 2010-12-21 03:57:05