[RESOLU] if isset

Eléphant du PHP | 150 Messages

08 sept. 2015, 22:30

bonjour,

je me heurte a un probleme que je ne comprend vraiment pas
<?php
$total_pieces=7;
$port=0;
if(isset($total_piece)&&($total_piece<="2")){$port=5;}
else if(isset($total_piece)&&($total_piece<"7")){$port=6;}
else if(isset($total_piece)&&($total_piece<"10")){$port=7;}
else if(isset($total_piece)&&($total_piece<"17")){$port=8;}
else if(isset($total_piece)&&($total_piece<"23")){$port=11;}
else if(isset($total_piece)&&($total_piece<"33")){$port=13;}
else {$port="sa bug";}
echo $port;
?>
sa me retourne "sa bug" au lieur de 7

Mammouth du PHP | 2703 Messages

08 sept. 2015, 22:35

tu testes si la variable $total_piece existe, alors que c'est $total_pieces que tu as défini, donc le isset retourne toujours false.

Eléphant du PHP | 150 Messages

08 sept. 2015, 22:40

$total_pieces=7;
$port=0;
if($total_piece<="2"){$port=5;}
else if($total_piece<"7"){$port=6;}
else if($total_piece<"10"){$port=7;}
else if($total_piece<"17"){$port=8;}
else if($total_piece<"23"){$port=11;}
else if($total_piece<"33"){$port=13;}
else {$port="sa bug";}
maintenant sa me retourne "5" au lieur de "6"

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

09 sept. 2015, 00:31

Bonjour,

Vérifies comment tu écrit $total_pieces par moment avec "s" par moment sans.
Si tu retire le s à la 1ère variable ton code fonctionne.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 150 Messages

09 sept. 2015, 00:38

hooooo je suis un boulet

merci beaucoup @rthur

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

09 sept. 2015, 11:40

Bonjour,

A noter également qu'il ne faut pas mettre de guillemets autour des nombres pour effectuer des opérations arithmétiques... certes, cela est toléré et fonctionne en php, mais ce n'est ni utile, ni lisible (42 est plus clair que "42"), ni performant (php doit convertir chaque chaine en sa valeur numérique pour effectuer la comparaison, certes c'est en pouillème de millisecondes, mais ça sert à rien de lui donner du travail en plus), ni portable (le jour où tu travailleras dans d'autres langages, ça ne fonctionnera pas. Ex en javascript "2"+"3"="23", alors que 2+3=5)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...