鍍金池/ 問答/PHP/ 字符串和數(shù)字相加。沒明白

字符串和數(shù)字相加。沒明白

echo 1+'1+2'.'
'; 輸出 2
echo 1+'2+0'.'
'; 輸出 3
echo 1+'0+2'; 輸出 1

求解。

回答
編輯回答
淚染裳
當(dāng)一個字符串被當(dāng)作一個數(shù)值來取值,其結(jié)果和類型如下:

如果該字符串沒有包含 '.','e' 或 'E' 并且其數(shù)字值在整型的范圍之內(nèi)(由 PHP_INT_MAX 所定義),該字符串將被當(dāng)成 integer 來取值。其它所有情況下都被作為 float 來取值。

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

參見 PHP: String字符串 - 字符串轉(zhuǎn)換為數(shù)值

2017年9月12日 21:10
編輯回答
殘淚

string和int加的時候,string會隱式轉(zhuǎn)成int ;

php在string轉(zhuǎn)int時,是截止到第一個不是數(shù)字的字符為止,比如:

<?php
$str = '3+3';
echo (int)$str ; //結(jié)果是3 

$str = '33+3';
echo (int)$str . "\r\n"; //結(jié)果是33 

$str = '033+3';
echo (int)$str . "\r\n"; //結(jié)果是33 
2018年8月17日 22:52
編輯回答
柒槿年

字符串轉(zhuǎn)數(shù)字
從頭開始查找字符串中的數(shù)字部分,直到找到非數(shù)字為止,然后將找到的數(shù)字部分轉(zhuǎn)int。
如果第一個字符就不是數(shù)字就返回0。
'123+1'找到123為止,然后轉(zhuǎn)數(shù)字123
特殊情況:123e1,如果e的前后都是數(shù)字,則表示科學(xué)計數(shù)法,所以123e1都是數(shù)字

2018年6月25日 09:39
編輯回答
野橘

進(jìn)行算術(shù)運行操作的時候,字符串轉(zhuǎn)換為數(shù)字,PHPString 字符串去查找字符串轉(zhuǎn)數(shù)字

2018年2月24日 19:38