2013-05-01 87 views
-4

如何使这条if语句适用于0,1和2只猫?PHP:if/elseif/else语句不正确的更好的方法?

当回声$猫= 0或1“这是好的,你只能有2只猫”

任何代码的建议吗?

<?php 
     //If you have more then 2 cats it is illegal 
     //if you have 20 or more cats "you are a freak!" 
     //If you have 2 cats "It is fine you only have 2 cats". 
     //If you have 1 cats "It is fine you only have 1 cat". 
     //If you have 0 cats "You don't have any cats no problem". 
     $cats = 25; 
     if ($cats > 2 && $cats < 20){ 
      echo "You have too many cats, it is illegal!"; 
     } elseif ($cats >= 20) { 
      echo "you are a freak!"; 
     } elseif ($cats = 2) { 
      echo "It is fine you only have 2 cats"; 
     } elseif ($cats = 1) { 
      echo "It is fine you only have 1 cat"; 
     } elseif ($cats = 0){ 
      echo "You don't have any cats no problem"; 
     } 
    ?> 

回答

2

使用==进行比较,=是分配。

此外,考虑你的代码重新排列,以这样的:

switch($cats) { 
case 0: 
    echo "You don't have any cats"; 
    break; 
case 1: 
    echo "You have 1 cat"; 
    break; 
case 2: 
    echo "You have 2 cats"; 
    break; 
default: 
    if($cats < 20) echo "You have too many cats"; 
    else echo "You are a freak!"; 
} 
+0

是的,我只是通过CodeCademy这是明显的答案。 – Josh 2013-05-01 05:12:03

1

==(比较),而不是=

} elseif ($cats == 2) { 
+0

啊。那也是用PHP来咬你的,呃? – 2013-05-01 05:09:32

+0

为什么投票? – Rikesh 2013-05-01 05:29:50

1

你用错了比较运算符语法

<?php 
      //If you have more then 2 cats it is illegal 
      //if you have 20 or more cats "you are a freak!" 
      //If you have 2 cats "It is fine you only have 2 cats". 
      //If you have 1 cats "It is fine you only have 1 cat". 
      //If you have 0 cats "You don't have any cats no problem". 
      $cats = 25; 
      if ($cats > 2 && $cats < 20){ 
       echo "You have too many cats, it is illegal!"; 
      } elseif ($cats >= 20) { 
       echo "you are a freak!"; 
      } elseif ($cats == 2) { 
       echo "It is fine you only have 2 cats"; 
      } elseif ($cats == 1) { 
       echo "It is fine you only have 1 cat"; 
      } elseif ($cats == 0){ 
       echo "You don't have any cats no problem"; 
      } 
0

如果PHP语句需要==不等于工作。

+0

好吧,除非你正在分配和测试一个真值(例如:每一个while($ row = mysql_fetch_assoc($ result))''循环你写过,这可能很容易就是一个'if'来测试对于单行) – 2013-05-01 15:48:07

1

尝试使用==代替=

else if ($cats == 2){}

0

错误的比较操作。只要使用它(我在你目前的编码方式与一些校正):

<?php 
     //If you have more then 2 cats it is illegal 
     //if you have 20 or more cats "you are a freak!" 
     //If you have 2 cats "It is fine you only have 2 cats". 
     //If you have 1 cats "It is fine you only have 1 cat". 
     //If you have 0 cats "You don't have any cats no problem". 
     $cats = 25; 
    if ($cats == 0){ 
      echo "You don't have any cats no problem"; 
     }else if ($cats == 1) { 
      echo "It is fine you only have 1 cat"; 
     } else if ($cats == 2) { 
      echo "It is fine you only have 2 cats"; 
     } else if ($cats > 2 && $cats < 20){ 
      echo "You have too many cats, it is illegal!"; 
     } else { 
      echo "you are a freak!"; 
     } 
    ?> 
+0

为什么?........... – Josh 2013-05-01 05:14:10

+0

您必须使用==代替=。 使代码易于理解(将您的条件按顺序排列) – 2013-05-01 05:15:44

0

如果你只是用==比较更换=分配)您的代码可能工作 )在您的if声明中运营商!不过,我想用switch声明往这个特定的情况下,它迄今为止更具可读性的同时向下滚动代码可以理解的;)

switch($cats) { 
    case 0: echo "You don't have any cats"; break; 
    case 1: echo "You have 1 cat"; break; 
    case 2: echo "You have 2 cats"; break; 
    default: echo ($cats < 20 ? "You have too many cats" : "You are a freak!"); 
} 

Ternary Operator谈到在这样的情况下,会非常方便的!