我的代码总是执行if语句,即使条件为false,也不会转到else。
<?php
$link = $count;
if ($link == 8 || 10) {
echo "<a href='files/".$link.".pdf'>Link</a>";
} else {
echo "Contact HES sales representative for detailed layout model";
}
?>
答案 0 :(得分:4)
因为10
是“真实”值,所以条件始终为真。你基本上有
if($link == 8 || true) {
因为10 == true
实际上是正确的。
您应该将其改编为
if ($link == 8 || $link == 10) {
如果你开始获得很多价值,你可以使用in_array()
if (in_array($link, array(8, 10)) {
如果需要,可以使用严格比较 - if(且仅当)$link
是整数。然后你有三个相等,这需要相同的值和相同的类型。这是因为PHP是弱类型的,因此默认情况下它不会比较类型(因此您可以比较不同的类型并获得有效的结果)。使用严格比较可以更好地控制您比较的变量类型。
if ($link === 8 || $link === 10) {
答案 1 :(得分:1)
条件$link == 8 || 10
将始终返回true。如果$link
不是8,那么它会检查10
是否为真。任何非零值都是真的。
相反:
if ($link == 8 || $link == 10) ...
或者,如果您希望检查列表中的值:
if (in_array($link, [8, 10])) ...
答案 2 :(得分:1)
if($link == 8 || 10)
//这句话永远是真的
因为10
是非零,它被声明为真。
你可以这样做if($link == 8 || $link == 10)
来实现这个目标
答案 3 :(得分:0)
您需要修改自己定义错误的if部分
if ($link == 8 || $link == 10) {
echo "<a href='files/".$link.".pdf'>Link</a>";}
} else {
echo "Contact HES sales representative for detailed layout model";
}