似乎在 PHP 中有一个 if 语句,其中函数 some_function() 返回零
<?php
if( some_function() == "whatever_you_want" ) { ... }
该语句将始终执行,因为
<?php
echo some_function() == "whatever_you_want";
则为 TRUE。
为什么 PHP 以如此反直觉的方式表现?
似乎在 PHP 中有一个 if 语句,其中函数 some_function() 返回零
<?php
if( some_function() == "whatever_you_want" ) { ... }
该语句将始终执行,因为
<?php
echo some_function() == "whatever_you_want";
则为 TRUE。
为什么 PHP 以如此反直觉的方式表现?
如果将数字与字符串进行比较或比较涉及数字字符串,则每个字符串都将转换为数字并以数字方式执行比较。这些规则也适用于 switch 语句。比较时不会发生类型转换,
===
因为!==
这涉及比较类型和值。
使用===
or进行严格的值比较,!==
您将获得预期的结果。