Aller au contenu

[résolu] [PHP] Truc bizarre pour initialisation

Featured Replies

Posté(e)

Hello,

Un collègue vient de me soumettre un truc bizarre qu'il a rencontré en PHP. Voici un bout de code d'exemple pour illustrer le problème :

<?
$test	= 08;
$t2 	= 09;
echo "test=".gettype($test)."/".$test."<hr />";
echo "t2=".gettype($t2)."/".$t2."<hr />";
if ($test >= $t2) {
echo $test.">=".$t2;
} else {
echo $test."<".$t2;
}
?>

PHP me renvoit ça :

test=integer/0

--------------------------------------------------------------------------------

t2=integer/0

--------------------------------------------------------------------------------

0>=0

Je n'arrive pas à savoir pour PHP réagit comme ça.

C'est normal que les chiffres situés derrière un zéro ne soient pas pris en compte ?

Merci d'avance.

Modifié par gvos_net

Posté(e)

Quand tu précèdes un nombre d'un zéro, PHP interprète ça comme de l'octal, à savoir un système de représentation des nombre qui n'utilise que les caractères 0 à 7. De fait :

07 == 7
010 == 8

Mais 08 et 09 sont des choses qui n'ont pas de sens.

Il faut donc enlever les 0 qui précèdent pour que ton code marche. Sauf si la représentation est normalement octale, auquel cas '8' et '9' n'ont rien à faire dans le code de ton collègue. Mais je ne pense pas que ça soit le cas.

Posté(e)
  • Auteur

Impec !

Merci beaucoup pour l'explication ! J'avais pas réussi à trouver ça sur le net.

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.