PHP为什么0 =='全部'是真的?

Sug*_*san 6 php

我正在阅读boolean的PHP文档.

其中一条评论说0 =='all'是真的.

http://php.net/manual/en/language.types.boolean.php#86809

我想知道它是如何成真的.

文档说除了'0'之外所有非空字符串都是真的.

所以'all'是真的,0是假的.

false == true 应该是假的.

但:

if(0=='all'){
    echo 'hello';
}else{
   echo 'how are you ';
}
Run Code Online (Sandbox Code Playgroud)

打印'你好'.

Bhu*_*hah 7

在PHP中,运算符==和!=不比较类型.因此,PHP会自动将'all'转换为0的整数.

echo intval('all');
Run Code Online (Sandbox Code Playgroud)

您可以使用===运算符来检查类型:

if(0 === 'all'){
    echo 'hello';
}else{
   echo 'how are you ';
}
Run Code Online (Sandbox Code Playgroud)

请参阅松散比较表.


Don*_*sto 4

由于左操作数是一个整数,php 会尝试将第二个操作数转换为整数。因此,由于字符串的整数表示为零,因此您有一个true背部。如果更换操作员,您会得到相同的结果。

正如 Bhumi 所说,如果您需要这种比较,请使用===.