Parse error: Invalid littéral numérique
J'ai l'erreur suivante lors de l'exécution de ce code ci-dessous:
Code:
<?php
$a = array(00001, 00008, 00009, 00012);
print_r($a);
?>
Erreur:
Parse error: Invalid littéral numérique.
Pourquoi ce problème et comment puis-je résoudre ce problème?
Je l'ai essayé sur PHPFiddle et ça marchait très bien...
Essayez-la dans PHP7 et voir ce qui se passe... 😉
oui c'est montrer d'erreur en PHP 7, mais pas en PHP 5
Essayez-la dans PHP7 et voir ce qui se passe... 😉
oui c'est montrer d'erreur en PHP 7, mais pas en PHP 5
OriginalL'auteur Rana Ghosh | 2016-11-22
Vous devez vous connecter pour publier un commentaire.
Cela vient de l'modifications apportées à la façon dont les nombres entiers, spécialement octals, sont traités dans PHP7 (comme oppsoed à PHP5).
À partir de la documentation (à partir de PHP7 migration)
À partir de la documentation d'entiers
Soit les utiliser comme des chaînes de caractères, réels ou entiers
OriginalL'auteur Qirel
C'est parce que tous les numéros commençant par 0 est considéré comme valeurs octales, qui a une limite de 8 chiffres par position (0-7). Comme indiqué dans le manuel PHP, au lieu de rejeter silencieusement les invalides chiffres maintenant (7.x) produisent de l'avertissement ci-dessus.
Pourquoi écrivez-vous vos chiffres comme ça si? Si les zéros sont significatifs, alors il n'est pas un numéro que vous avez, mais une chaîne de caractères. Si vous avez besoin de faire des calculs sur ces comme si elles étaient des nombres, alors vous devez ajouter des zéros à gauche lors de la sortie les valeurs pour le client.
Cela peut être fait avec
printf()
ousprintf()
comme ceci:Veuillez voir le manuel pour plus d'exemples.
OriginalL'auteur ChristianF
Parfois une apparemment valide littéral numérique est détecté comme non valide littéral numérique.
C'est une régression depuis php5.4
Vous pouvez résoudre ce problème en modifiant le tableau:
Référence: https://bugs.php.net/bug.php?id=70193
OriginalL'auteur Ashish Kumar