php内联if语句不起作用

时间:2017-03-02 09:24:26

标签: php

我不确定我做错了什么,但内联if语句总是返回true,即使它不应该。

我有以下声明

<?php echo ($total == 'Scratched' || ($total > 0 && $total < 65)) ? 'ffefef' : 'f7f7f7'; ?>

就在这句话之上,我回应$total并回应0

在我定义的页面顶部 <?php $total = 0; ?>,因此$total被定义为整数。

上述if语句仅在$total > 64时返回false,但在total为0时返回

提前致谢

5 个答案:

答案 0 :(得分:6)

因为0 == 'Scratched'

 // Strict comparison fixes it
 echo ($total === 'Scratched' || ($total > 0 && $total < 65)) ? 'ffefef' : 'f7f7f7'; 

答案 1 :(得分:3)

这是有效的

<?php 
$total = 0;
echo ($total === 'Scratched' || ($total > 0 && $total < 65)) ? 'ffefef' : 'f7f7f7';
?>

答案 2 :(得分:3)

根据您的具体情况而定。如果我理解得很好。如果0,你的州不会接受它为假。

以上代码应该有效。但请尝试明确添加不等于零:

echo ($total === 'Scratched' || ($total > 0 && $total < 65 && $total != 0)) ? 'ffefef' : 'f7f7f7';
  

还添加了===以确保第一个类型为 string 的语句。

答案 3 :(得分:1)

使用===来比较$total === 'Scratched'和将要修复的内容

 <?php echo ($total === 'Scratched' || ($total > 0 && $total < 65)) ? 'ffefef' : 'f7f7f7'; ?>

答案 4 :(得分:0)

您可以尝试严格比较:

<?php echo ($total === 'Scratched' || ($total > 0 && $total < 65)) ? 'ffefef' : 'f7f7f7'; ?>

由于比较字符串上的数字变量,字符串在数字上下文中计算并表示0。

您可以查看以下帖子: Comparing String to Integer gives strange results