2017-03-02 88 views
0

我不确定我在做什么错,但是内联if语句总是返回true,即使它不应该。php inline if statement not working

我有下面的语句

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

就在上述声明,我赞同$total,并且呼应了0

在页面的顶部,我定义 <?php $total = 0; ?>,所以$total定义作为整数。

以上的if语句只返回false $total > 64而不是当总量提前0

感谢

+1

@MarkBaker,但在问题中没有嵌套的三元组 –

+0

[PHP等式(== double等于)和identity(=== triple等于)如何区分比较运算符的可能重复吗?] (http://stackoverflow.com/questions/80646/how-do-the-php-equality-double-equals-and-identity-triple-equals-comp) – TZHX

回答

3

这是工作

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

注意三等分“===” – Hossam

6

这是因为0 == 'Scratched'

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

根据你的情况。如果我理解得很好。如果您的状态为0,您不会接受它为false。

上面的代码应该可以工作。但尽量明确地添加不等于零:

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

还增加===使字符串类型的肯定第一个语句。

1

使用===比较$total === 'Scratched',这将固定

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

你可以试试严格比较:

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

因为一个数字变量在一个字符串比较,字符串被评估一个数字上下文并且代表0.

您可以看看这个folo翅膀帖子: Comparing String to Integer gives strange results