Maison >développement back-end >Problème PHP >php dépasse la plage de mise en forme

php dépasse la plage de mise en forme

王林
王林original
2023-05-06 13:58:08971parcourir

La plupart des langages de programmation ont des limitations sur les types de variables. Le dépassement de ces limites entraînera des problèmes ou des erreurs d'exécution, et PHP ne fait pas exception. En PHP, la plage des variables entières va de -2147483648 à 2147483647. Lorsque cette plage est dépassée, le problème du dépassement de la plage entière se produira.

Il peut y avoir de nombreuses raisons pour lesquelles la plage entière est dépassée, telles que :

  1. Les opérations numériques sont hors plage. Lors de l'ajout de deux entiers, si leur somme dépasse la valeur maximale du type entier, un problème hors plage se produira.
  2. Problème de dépassement d'entier. Une autre raison courante pour laquelle la plage d'un type entier dépasse est que la valeur de la variable elle-même dépasse la valeur maximale du type entier. C'est ce qu'on appelle un dépassement d'entier.
  3. Lors de la lecture de données provenant d'autres systèmes ou interfaces, les types de données sont incohérents.

Afin de mieux comprendre le problème du dépassement de la plage entière par PHP, nous pouvons l'illustrer à travers l'exemple suivant.

  1. Opération sur les nombres hors plage

Par exemple, essayons de calculer la somme de deux entiers afin que le résultat soit hors de la plage du type entier.

$x = 2147483647;
$y = 2;

echo $x + $y; // Le résultat de sortie est -2147483647

Puisque le résultat de l'ajout de $x et $y dépasse la valeur maximale de 2147483647, php Traitez-le comme un nombre négatif et affichez le résultat comme -2147483647.

  1. Dépassement d'entier

Vous pouvez également définir manuellement la variable entière sur une valeur supérieure à 2147483647 pour reproduire le problème de débordement d'entier.

$x = 2147483648;

echo $x; // Le résultat de sortie est -2147483648

Puisque 2147483648 est supérieur à la plus grande valeur entière 2147483647, PHP le traite comme un nombre négatif -2147483648.

  1. Types de données incohérents

Lors de la lecture de données provenant d'autres systèmes ou interfaces, vous devez faire attention au problème des types de données incohérents.

Par exemple, obtenons des données numériques à partir d'un fichier json.

{"number": 12345678901234567890}

$json = file_get_contents("/path/to/json/file.json");
$data = json_decode($json, true);
$number = $data[" number"];

echo $number; // Le résultat de sortie est 12345678901234567890

Étant donné que la valeur entière maximale en php est 2147483647 et que la valeur lue dans le fichier json est supérieure à cette valeur, php la traite comme un flottant. plutôt qu'un entier.

Concernant la façon de résoudre le problème selon lequel PHP dépasse la plage entière, il existe les solutions suivantes :

  1. Utilisez une grande bibliothèque de nombres. Lorsque vous devez effectuer des calculs au-delà de la plage des nombres entiers, vous pouvez utiliser la bibliothèque de grands nombres fournie par PHP, telle que gmp ou bcmath. $ Par exemple : $ x = "12345678901234567890" ;
  2. $ y = "9876543210987654321"

$ SUM = GMP_ADD ($ x, $ y) ; Stocker des entiers dans la base de données au lieu d'utiliser des variables php . Le stockage de base de données peut accueillir des valeurs entières plus grandes.

Modifier le fichier de configuration php. Vous pouvez essayer de modifier les éléments de configuration dans le fichier de configuration php php.ini, comme définir l'utilisation d'entiers 64 bits.

Dans le développement PHP, le dépassement de la plage des nombres entiers est un problème qui ne peut être ignoré. Une attention particulière doit être portée lors de l'écriture du code et de la révision du code pour éviter que de tels problèmes ne se produisent.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn