Maison  >  Article  >  développement back-end  >  Analyser le type de données PHP entier (Integer)

Analyser le type de données PHP entier (Integer)

怪我咯
怪我咯original
2017-04-05 10:39:531826parcourir

Un entier est un nombre dans l'ensemble ℤ = {..., -2, -1, 0, 1, 2, ...}.

Syntaxe

Les valeurs entières peuvent être représentées en décimal, hexadécimal, octal ou binaire, et peuvent être précédées d'un symbole facultatif (- ou +).

Entier exprimé binaire disponible depuis PHP 5.4.0.

Pour utiliser la représentation octale, un nombre doit être précédé de 0 (zéro). Pour utiliser la représentation hexadécimale, le nombre doit être précédé de 0x. Pour utiliser la représentation binaire, le nombre doit être précédé de 0b.

Exemple n°1 EntierExpression textuelle

<?php
$a = 1234; // 十进制数
$a = -123; // 负数
$a = 0123; // 八进制数 (等于十进制 83)
$a = 0x1A; // 十六进制数 (等于十进制 26)
?>

La description formelle de l'entier est :

décimal : [1-9][0 - 9]*
| 0

hexadécimal : 0[xX][0-9a-fA-F]+

octal : 0[0-7]+

binaire : 0b[01]+

entier : [+-]?décimal
| [+-]?hexadécimal
| ?binaire

La taille des mots des entiers dépend de la plate-forme, bien que le maximum habituel soit d'environ deux milliards (signé 32 bits). La valeur maximale sur les plates-formes 64 bits est généralement d'environ 9E18. PHP ne prend pas en charge les entiers non signés. La longueur de mot d'une valeur entière peut être représentée par la constante

PHP_INT_SIZE Depuis PHP 4.4.0 et PHP 5.0.5, la valeur maximale peut être représentée par la constante PHP_INT_MAX.

Avertissement

Si un numéro illégal est passé à un nombre octal (c'est-à-dire 8 ou 9), les chiffres restants seront ignorés.

Exemple n°2 : Des choses étranges à propos des nombres octaux

<?php
var_dump(01090); // 八进制 010 = 十进制 8
?>
Débordement d'entier

Si un nombre donné dépasse la plage des nombres entiers, il sera interprété comme

float . De même, si le résultat de l’opération dépasse la plage d’entiers, float sera également renvoyé.

Exemple n°3 Débordement d'entier sous système 32 bits

<?php
$large_number = 2147483647;
var_dump($large_number);                     // int(2147483647)
 
$large_number = 2147483648;
var_dump($large_number);                     // float(2147483648)
 
$million = 1000000;
$large_number =  50000 * $million;
var_dump($large_number);                     // float(50000000000)
?>
Exemple n°4 Débordement d'entier sous système 64 bits

<?php
$large_number = 9223372036854775807;
var_dump($large_number);                     // int(9223372036854775807)
 
$large_number = 9223372036854775808;
var_dump($large_number);                     // float(9.2233720368548E+18)
$million = 1000000;
$large_number =  50000000000000 * $million;
var_dump($large_number);                     // float(5.0E+19)
?>
Il n'y a pas de division entière dans PHP

Opérateur. 1/2 donne un flottant de 0,5. La valeur peut être convertie en un entier sans la partie décimale, ou utiliser la fonction round() pour un meilleur arrondi.

Convertir en entier
<?php
var_dump(25/7);         // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7));  // float(4)
?>

Pour convertir explicitement une valeur en entier, utilisez la conversion (int) ou (integer). La plupart du temps, cependant, aucun casting n'est nécessaire, car lorsqu'un opérateur, une fonction ou un

contrôle de flux

nécessite un paramètre entier, la valeur est automatiquement convertie. Vous pouvez également utiliser la fonction intval() pour convertir une valeur en type entier. Voir :

Discrimination de conversion de type

. Conversion à partir d'une valeur booléenne

FALSE produira 0 (zéro), TRUE produira 1 (un).

Conversion de

Float

Lors de la conversion d'un nombre à virgule flottante en un nombre entier, il est arrondi à l'inférieur.

Si le nombre à virgule flottante dépasse la plage entière (généralement +/- 2,15e+9 = 2^31 sur les plateformes 32 bits, +/- 9,22e+18 = 2^63 sur les plateformes 64 bits ), le résultat n'est pas défini car la précision est insuffisante pour donner un résultat entier exact. Il n’y a aucun avertissement dans ce cas, pas même aucune notification !

Avertissement

Ne convertissez jamais une fraction inconnue en un nombre entier, car cela peut parfois conduire à des résultats imprévisibles.

La conversion d'autres types en entier n'est pas définie. Ne vous fiez à aucun comportement existant car il peut changer sans préavis.
<?php
echo (int) ( (0.1+0.7) * 10 ); // 显示 7!
?>

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