Explication détaillée de l'auto-calcul des chaînes PHP et de l'utilisation du calcul numérique

伊谢尔伦
Libérer: 2023-03-10 22:24:01
original
1836 Les gens l'ont consulté

Lorsqu'une chaîne est traitée comme une valeur numérique, le résultat et le type sont les suivants :

Si la chaîne ne contient pas '.', 'e' ou 'E' et sa valeur numérique est dans la plage des types entiers (définis par PHP_INT_MAX), la chaîne sera traitée comme entier pour obtenir la valeur. Dans tous les autres cas, la valeur est traitée comme flottante.

Le début de la chaîne détermine sa valeur. Si la chaîne commence par une valeur numérique légale, cette valeur numérique est utilisée. Sinon, sa valeur est 0 (zéro). Les valeurs légales sont constituées d'un signe facultatif, suivi d'un ou plusieurs chiffres (éventuellement avec un point décimal), puis d'une partie exposant facultative. La partie exposant se compose d’un « e » ou d’un « E » suivi d’un ou plusieurs chiffres.

sera converti en entiers comme suit :

[+/-][0-9][*]
Copier après la connexion

Si vous avez déterminé que vous avez besoin d'un entier (nombre à virgule flottante), vous pouvez utiliser intval() (floatval() ) pour convertir d'abord la chaîne en un entier (nombre à virgule flottante), puis effectuer des calculs avec d'autres valeurs. Un. Ajout de chaînes numériques en PHP

[+/-][0-9][.][0-9][e/E][0-9][*]
Copier après la connexion
1. Si deux chaînes n'ont pas de valeur valide au début ou ne sont pas des chaînes numériques, les deux chaînes seront considérées comme 0 lors de leur ajout
$r = '123' + 1;
var_dump($r);// 输出结果 int(124)$r = '123.4' + 1;
var_dump($r);// 输出结果 float(124.4)$r = '1.5e4' + 1;
var_dump($r);// 输出结果 float(15001)$r = '123456789123456789' + 1;
var_dump($r);// 输出结果 float(1.2345678912346E+17)$r = '123abc' + 1;
var_dump($r);// 输出结果 int(124)$r = '123e1abc' + 1;
var_dump($r);// 输出结果 float(1231)$r = '123.abc' + 1;
var_dump($r);//输出结果 float(124)$r = '+123abc' + 1;
var_dump($r);// 输出结果 int(124)$r = '-123abc' + 1;
var_dump($r);// 输出结果 int(-122)$r = 'abc' + 1;
var_dump($r);// 输出结果 int(1)
Copier après la connexion

< ; 🎜>2. Lors de l'ajout de deux chaînes numériques, les chiffres significatifs sont ajoutés.

3/Si la chaîne contient '.', 'e', ​​'E', elle sera traitée comme un nombre de type float.

$a="abc";
$b="b01";
$a+$b是0
Copier après la connexion

Comparez deux chaînes dans 2.php (< > ==);

$a="100";
$b="01a";
$a+$b=101;
Copier après la connexion
Deux

comparaisons de chaînes dans 1.php< Si 🎜> est égal , n'utilisez généralement pas (==), car (==) changera le

type de données d'origine
$a="100";
$b="12.6a";
$a+$b=112.6;
Copier après la connexion
, mais utilisez la série de fonctions strcmp(str1, str2)
$a=&#39;10&#39;;
$b=&#39;12.3e3&#39;;
$a+$b同样为float型float(12310)
Copier après la connexion
strcmp($str1,$ str2 ); (strcmp est obligé de se convertir en type

string

à des fins de comparaison).

Mais comparé à (==), le résultat est vraivar_dump($a==$b);C'est donc généralement non utilisé (==) effectue une comparaison de chaînes.

De plus, lors de la comparaison d'un nombre avec une chaîne, la chaîne sera convertie en type int ou float (numberic_string contient '.', 'e', ​​'E').
$a=&#39;123&#39;;
$b=&#39;123.&#39;;($b后多了一个小数点)
Copier après la connexion

2. Comparaison de ( > < )

2-1 : S'il s'agit d'une comparaison de deux chaînes, comparez les codes ascii des caractères correspondants un par un.

2-2 : Si des nombres sont comparés à des chaînes, les chaînes sont d'abord converties en nombres puis comparées.

2-3 : Si deux chaînes numériques (chaînes numériques pures) sont comparées, les deux chaînes sont d'abord converties en nombres puis comparées.
‘abc’转化为int(0);
‘12ab’转化为int(12);
‘12.3e3&#39;转化为float(12300);
Copier après la connexion

Mais

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal