首頁 > 後端開發 > php教程 > php字串自身計算及與數值計算用法詳解

php字串自身計算及與數值計算用法詳解

伊谢尔伦
發布: 2023-03-10 22:24:01
原創
1864 人瀏覽過

當一個字串被當作一個數值來取值,其結果和型別如下:

#如果字串沒有包含'.','e' 或'E ' 且其數字值在整數型的範圍之內(由PHP_INT_MAX 所定義),該字串將會被當成integer 來取值。其它所有情況下都被作為 float 來取值。

該字串的開始部分決定了它的值。如果字串以合法的數值開始,則使用該數值。否則其值為 0(零)。合法數值由可選的正負號,後面跟著一個或多個數字(可能有小數點),再跟著可選的指數部分。指數部分由 ‘e’ 或 ‘E’ 後面跟著一個或多個數字構成。

如下會被轉換成整數:

[+/-][0-9][*]
登入後複製

如下會被轉換成浮點型數:

[+/-][0-9][.][0-9][e/E][0-9][*]
登入後複製
$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)
登入後複製

已經確定需要的是整數(浮點數),則可以使用intval()(floatval())先將字串轉換成整數(浮點數),然後再與其他數值進行計算。

一。 PHP中數值型字串相加

1.若兩個字串開頭沒有有效數值或不是數值型字串,這兩個字串相加時都會看成0;

$a="abc";
$b="b01";
$a+$b是0
登入後複製

2.兩個數值型字串相加時,有效數字進行相加。

$a="100";
$b="01a";
$a+$b=101;
登入後複製

3/如果字串中帶有‘.’,'e','E'時,按float型數字處理。

$a="100";
$b="12.6a";
$a+$b=112.6;
登入後複製
$a='10';
$b='12.3e3';
$a+$b同样为float型float(12310)
登入後複製

二.php中兩個字串相比較(< > ==);

1.php中兩個字串比較是否相等,一般不用(==),因為(==)會改變原有資料型別,而是用strcmp(str1,str2)系列函數strcmp($str1,$str2);(strcmp是強制轉化為string型進行比較)。

$a=&#39;123&#39;;
$b=&#39;123.&#39;;($b后多了一个小数点)
登入後複製

但是有(==)比較是結果卻是true

var_dump($a==$b);

所以一般不用(= =)進行字串的比較。

另外,當一個數字與字串進行比較時,字串會轉換為int或float型(numberic_string含有‘.’,'e','E')。

‘abc’转化为int(0);
‘12ab’转化为int(12);
‘12.3e3&#39;转化为float(12300);
登入後複製

2.( > < )的比較

2-1:如果是兩個字串的比較,則逐一比較對應的字元的ascii碼。

2-2:如果是數字與字串進行比較,字串先轉換為數字,然後再比較。

2-3:如果是兩個數字型字串(純數字型字串)進行比較,則這兩個字串首先轉換為數字再進行比較。

$a=&#39;100&#39;;
$b=&#39;20&#39;;
则$a>$b;
登入後複製

但是

如$a=&#39;&#39;100a;
$b=&#39;20&#39;;时,
结果为$a<$b;
登入後複製

以上是php字串自身計算及與數值計算用法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板