PHP 中, 字符串与0比较是相等的?

今天遇到一个奇怪的问题, 看下面代码

$utm_source = $_GET['utm_source'];
if($utm_source == 0){
    $utm_source = 'default';
}

最后运行的结果 $utm_source 的值总是 default

原来 PHP 会先比较类型, 会先把 $utm_source 的值转化为整型, 也就是 $utm_source 的值变成 0, 然后再和 0 比较, 那自然 if 条件总是 true 了.

比较安全的做法是使用全等于

if($utm_source === 0)

或者给 0 加一个引号

if($utm_source == '0')

您可能还喜欢...