我們在PHP開發的過程中絕對會遇到接收到的資料型別和我們想要的資料型別不一樣,這時我們就是可以使用 PHP型別轉換了,今天我們要來講的就是PHP中的了型別轉換,廢話不多說了,我們一起來看吧!
轉換為整數和浮點數
#能轉換為整數的型別只包括浮點數、布林值,字串和資源。數組、物件不能轉換為數值類型。
轉換為浮點數時,除了字串轉換為浮點數時有自己的一套規則外,而其他值都是先轉換為整數(在能轉換為整數的前提下),再轉換為浮點數。
當從浮點數轉換成整數時,將向下取整(小數部分丟棄)。如果浮點數超出了整數範圍,則結果為未定義,因為沒有足夠的精確度給出一個確切的整數結果。在此情況下沒有警告,甚至沒有任何通知!
PHP 7.0.0 起,NaN 和 Infinity 在轉換成 integer 時,不再是 undefined 或依賴平台,而是都會變成零。
字串(只支援十進位)轉換為整數時,從第一個字元開始尋找合法的整數位符直到字串結尾或遇到非整數符符,將找到的字元轉換為整數,若無合法字符,結果為0。
字串轉換為浮點數時,從第一個字元開始尋找合法的浮點數位符直到字串結尾或遇到非浮點數位符,將找到的字元轉換為浮點數,若無合法字符,結果為0。
如果該字串沒有包含'.','e' 或'E' 並且其數字值在整型的範圍之內(由PHP_INT_MAX 所定義),則該字串將被當成integer 來取值。其它所有情況下都被作為 float 來取值。
該字串的開始部分決定了它的值。如果字串以合法的數值開始,則使用該數值。否則其值為 0(零)。合法數值由可選的正負號,後面跟著一個或多個數字(可能有小數點),再跟著可選的指數部分。指數部分由 'e' 或 'E' 後面跟著一個或多個數字構成。
echo 0+"0xff","\n"; // 0 echo 0+"2.33","\n"; // 2.33 echo 0+"033","\n"; // 33 echo 0+"2e3","\n"; // 2000
null -> 0 true -> 1 false -> 0
將 resource 轉換成 integer 時, 結果會是 PHP 執行階段為 resource 所指派的唯一資源號碼。
轉換為字串
true -> "1" false -> "" null -> ""
整數或浮點數轉換為字串,直接將數值表示成字串(十進位、小數點形式)
數組轉換為字串時,結果都是"Array"
物件轉換為字串時,結果都是"Object"
資源轉換字串時,類似"Resource id#1"這樣的字串
轉換為布林值
##當其它值轉換為布林值時,只有以下這些值會轉換為false,其他的全都轉換為true:
##整數0
##浮點數0.0##字串"0"
字串""
空數組(無元素)空物件(無成員)NULL(包含尚未設定的變數)從空標記產生的SimpleXML 物件
#轉換為陣列echo var_dump((array)null); //array(0) { }
(int)(integer) (float)(double)(real) (bool)(boolean) (string) (array) (object)
$var = true; settype($var, "integer"); var_dump($var); // int(1)
$var = "0xff"; $num = intval($var, 16); var_dump($var); // string(4) "0xff" var_dump($num); // int(255)
strval()函數的參數只能是標量類型,如整數、浮點數、布林值、字串。不能用於數組或物件。
什麼情況下不會進行隱含轉換
#算術運算子的兩個運算元都會轉換為數值類型。
字串連接符的兩個運算元都會轉換為字串型別。
在一個需要字串的表達式中,會自動轉換為string。例如在使用函數 echo 或 print 時,或在一個變數和一個 string 進行比較時,就會發生這種轉換。
以上就是 php中的型別轉換 的所有內容了,希望對大家有幫助,更多質料請在本站搜尋。
相關推薦:
#以上是php中的型別轉換的詳細內容。更多資訊請關注PHP中文網其他相關文章!