PHP字符串比较未能产生预期结果

3
我有一个小的代码片段,如下所示:
$duration = 0;
if ($duration == 'daily') {
    $duration = '+1 DAY';
}

echo $duration;

我原本期望输出为0,但最终结果却是+1天。我无法理解为什么以上条件会成功?

但当我使用===时可以得到期望的结果。

我已在php 7php 5.5中进行了检查。两个版本都输出0。


1
听起来你遇到了某种类型转换问题。基本上它试图将“daily”转换为整数并得到0,这与整数0匹配(https://dev59.com/x1HTa4cB1Zd3GeqPTKKP)。另外,作为一般规则,最好将常量/函数调用/不可更改的内容放在比较的左侧,因为如果省略一个=号,你就不会意外地将其分配。 - GordonM
Php不知道如何比较string('daily')和integer(0)的值,因此if语句将始终为真,并且$duration = '+1 DAY' - Or Med
1个回答

0

这是类型误解。

使用,

$duration = '0';
if ($duration == 'daily') {
    $duration = '+1 DAY';
}

echo $duration;

它将显示您的答案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接