为什么(0 =='Hello')在PHP中返回true?

Tim*_*Tim 35 php if-statement

嘿,如果你有以下代码,并想检查我发现的$key匹配Hello,那么true如果变量是,则总是返回比较0.我遇到了一个特殊键的数组,并想知道为什么它没有按预期工作.请参阅此代码以获取示例.

$key = 1;
if ($key != 'Hello') echo 'Hello'; //echoes hello

$key = 2;
if ($key != 'Hello') echo 'Hello'; //echoes hello

$key = 0;
if ($key != 'Hello') echo '0Hello'; //doesnt echo hello. why?
if ($key !== 'Hello') echo 'Hello'; //echoes hello
Run Code Online (Sandbox Code Playgroud)

有谁能解释一下?

Zoo*_*Way 49

操作员==!=没有比较类型.因此PHP自动将'Hello'转换为0(intval('Hello'))的整数.如果不确定类型,请使用类型比较运算符===!==.或者更好地确定您在程序中的任何位置处理哪种类型.

  • +1知道你正在处理什么类型.遗憾的是,类型提示在API或文档中被忽略了. (2认同)