其他声明没有在php中执行

时间:2017-07-10 18:02:41

标签: php if-statement conditional-statements

我的代码总是执行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";
}
?>

4 个答案:

答案 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";
}