我需要使用特殊字符作为程序的停止/中断信号。我正在尝试'#''&' '@'并继续收到错误。
经过一番乱搞,我发现包括上面所有字符在内的所有字符的数值都是0!我是通过将它们的值与数值进行比较来实现的,因为起初我认为它使用的是ASCII码。
等一下,这不对,因为NULL也等于0!但是这些字符肯定不等于NULL!
那么,PHP使用什么样的字符编码?是否无法将字符与数字进行比较?
提前致谢!
答案 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";
}
?>