10
votes

0 dans l'étui de commutation?

Désolé pour peut-être la question muette, mais j'ai un problème énorme avec un cas lorsque j'ai une variable int variable avec la valeur de 0 (zéro).

case ($starost_vozila >= 0 && $starost_vozila < 6):


2 commentaires

// Offtopic mon conseil personnel est d'utiliser des mots anglais lors de la nommant vos variables. Par exemple, je les comprends, mais probablement la plupart des visiteurs ici - ne le font pas. C'est une bonne pratique cependant. SYS ZDRAVE! :)


Couru dans une situation similaire, frappa ma tête contre le mur et trouva ceci. Merci beaucoup d'avoir posté.


3 Réponses :


0
votes

Utiliser le commutateur est comme == dans "si instruction" et non === (ne vérifie pas le type). Seule une chaîne vide ou NULL entraînerait un entier 0 - autre que cela, ils sont considérés comme une chaîne 0.


0 commentaires

3
votes

Vous utilisez le commutateur de manière incorrecte.

Votre code est compris comme ceci: xxx

par exemple, ($ starost_vozila <6) deviendra soit true ou false . $ starost_vozila == ($ starost_vozila <6) est comparant $ starost_vozila à true ou false , ce qui est Pas ce que vous voulez faire.

Je suggère d'utiliser si / elseif plutôt que commutateur dans ce cas. Par exemple: xxx


0 commentaires

9
votes

Les cas de commutation ne prennent pas de déclarations qui doivent être évaluées. Ils prennent des chaînes simples, des booléens ou des chiffres à comparer contre

alors disent que vous avez xxx

Vous vous attendez à ce que cela fonctionne, mais ce n'est pas et voici pourquoi < / p>

($ x <10) évalue vers vrai donc ce que vous avez réellement est: xxx

0! = true donc le cas échoue

Vous devez utiliser xxx


2 commentaires

Merci! Juste ce dont j'avais besoin pour trouver entendre et faire tout ce qui est clair. :)


Merci pour la réponse, comme indiqué dans la question, cela fonctionne pour toutes les attentes lorsque la valeur est 0, il est donc correct d'utiliser un étui de commutation pour tous les autres cas et utilisez-le si seulement lorsque sa 0. Merci.