2013-05-01 2 views
-4

Comment faire que cette instruction if fonctionne pour 0, 1 et 2 chats?PHP: Si/elseif/else instruction incorrecte meilleure méthode?

Lorsque $ chats = 0 ou 1, il ECHOS "Il est bien que vous avez seulement 2 chats"

Toute suggestion de code?

<?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"; 
     } 
    ?> 

Répondre

2

Utilisez == pour la comparaison, = pour l'affectation.

De plus, pensez à réarranger votre code à ceci:

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

Oui, je passe juste par CodeCademy c'est la réponse évidente. – Josh

1

devrait être == (à titre de comparaison) et non = (pour l'affectation)

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

Ah. Cela vous mord également en PHP, hein? –

+0

Down vote pour quoi? – Rikesh

1

vous avez utilisé mauvaise comparaison syntaxe de l'opérateur

<?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

si les déclarations en PHP nécessitent == pas = de travailler.

+0

Eh bien, à moins que vous n'assigniez et ne testiez une valeur de vérité (exemple: chaque boucle while ($ row = mysql_fetch_assoc ($ result)) 'que vous avez déjà écrite, qui peut tout aussi bien être testée pour une seule ligne) –

1

essayez d'utiliser == au lieu de =

else if ($cats == 2){}

0

erreur de l'opérateur de comparaison. Il suffit d'utiliser (je codé dans votre façon actuelle avec une correction):

<?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

Pourquoi? ........... – Josh

+0

vous devez utiliser == au lieu de =. rendre le code facile à comprendre (mettez vos conditions dans un ordre séquentiel) –

0

Votre code pourrait fonctionner si vous souhaitez simplement remplacer la (affectation ) = avec == (comparaison) dans votre if instructions! Cependant, je voudrais aller avec une déclaration switch dans ce cas précis, de loin son plus lisible et compréhensible tout en faisant défiler vers le bas le code;)

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!"); 
} 

Le Ternary Operator vient assez pratique dans des situations comme celle-ci aussi!

Questions connexes