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

來源:互聯網
上載者:User
當一個字串被當作一個數值來取值,其結果和類型如下:

如果該字串沒有包含 ‘.’,’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='123';$b='123.';($b後多了一個小數點)

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

var_dump($a==$b);

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

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

‘abc’轉化為int(0);‘12ab’轉化為int(12);‘12.3e3'轉化為float(12300);

2.( > < )的比較

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

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

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

$a='100';$b='20';則$a>$b;

但是

如$a=''100a;$b='20';時,結果為$a<$b;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.