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):
3 Réponses :
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. P>
Vous utilisez le commutateur Votre code est compris comme ceci: p> par exemple, Je suggère d'utiliser code> de manière incorrecte. ($ starost_vozila <6) code> deviendra soit true code> ou false code>. $ starost_vozila == ($ starost_vozila <6) code> est comparant $ starost_vozila code> à true code> ou false code>, ce qui est Pas ce que vous voulez faire. p> si code> / elseif code> plutôt que commutateur code> dans ce cas. Par exemple: p>
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 p> Vous vous attendez à ce que cela fonctionne, mais ce n'est pas et voici pourquoi < / p> Vous devez utiliser p> ($ x <10) code> évalue vers vrai code>
donc ce que vous avez réellement est: p> 0! = true code> donc le cas échoue p>
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.
// 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é.