Je viens de faire face à un petit extrait de code PHP de 3v4l: https://3v4l.org/jmrZB
echo 1...1; //10.1
Et j'ai bien peur de ne pas savoir comment en expliquer les résultats. Pourquoi est-ce considéré comme valide?
Je viens de faire face à un petit extrait de code PHP de 3v4l: https://3v4l.org/jmrZB
echo 1...1; //10.1
Et j'ai bien peur de ne pas savoir comment en expliquer les résultats. Pourquoi est-ce considéré comme valide?
La dot (.
) a deux rôles en PHP:
1.1
. À la fois la partie entière et la partie décimale sont en option sur les nombres réels , mais pas sur le même temps. Cela signifie à la fois 1.
et .1
sont valables nombres réels en PHP, mais .
n'est pas un nombre.1 . 1
est le même que '1' . '1'
, et sa valeur est la chaîne de caractères '11'
.L'expression 1...1
est analysée comme 1. . .1
. Selon ces dit ci-dessus, 1.
et .1
sont des nombres réels (1.0
et 0.1
) et le point du milieu (.
) est l'opérateur de concaténation de chaîne.
Lorsque convertit les nombres en chaînes, PHP utilise le montant minimum de caractères requis pour cette opération. Si un nombre réel a seulement partie intégrante de la partie alors qu'il représente le nombre entier, sans virgule et sans décimales.
C'est pourquoi, 1. . .1
est le même que '1' . '0.1'
et la valeur finale de l'expression est - 10.1
.
1...1
interprétés de cette manière?L'analyseur lit l'expression de gauche à droite. 1
le raconte un nombre commence là. 1.
est valable un nombre réel, mais 1..
ne l'est pas. Il conserve 1.
comme un numéro, puis de la suivante, dot est l'opérateur de concaténation. Le prochain .
, suivi par un chiffre, c'est le début d'un autre nombre réel (.1
).
Dans l'ensemble, 1...1
est le même que 1. . .1
.
Différentes opérations.
1. <?php echo 1.1; ?> // gives simple 1.1
2. <?php echo 1...1; ?> // gives 10.1
3. <?php echo 1..'1'; ?> // gives 11
4. <?php var_dump(1.); ?> // gives 1
5. <?php var_dump(.1); ?> // gives 0.1
Maintenant, notre étrange opération
echo 1...1
est traitée comme une concaténation du no 4 et du no 5, ce qui donne 10,1
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.