PHP char编码,#== 0,0 == NULL,#!= NULL

时间:2010-12-21 03:41:01

标签: php char

我需要使用特殊字符作为程序的停止/中断信号。我正在尝试'#''&' '@'并继续收到错误。

经过一番乱搞,我发现包括上面所有字符在内的所有字符的数值都是0!我是通过将它们的值与数值进行比较来实现的,因为起初我认为它使用的是ASCII码。

等一下,这不对,因为NULL也等于0!但是这些字符肯定不等于NULL!

那么,PHP使用什么样的字符编码?是否无法将字符与数字进行比较?

提前致谢!

3 个答案:

答案 0 :(得分:2)

它与ascii或char编码无关,它只是在进行比较时的php隐式转换。

http://www.php.net/manual/en/language.operators.comparison.php

答案 1 :(得分: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

答案 2 :(得分:1)

将字符串与整数进行比较时,字符串将被转换为int并赋予0。

您可能想要使用ord

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