首頁  >  文章  >  後端開發  >  php中的型別轉換

php中的型別轉換

韦小宝
韦小宝原創
2018-05-14 14:38:557424瀏覽

我們在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 物件 

#轉換為陣列



########## #####整數、浮點數、布林值、字串轉換為陣列時,得到一個新數組,數組只有一個元素,這就元素的值就是對應的整數、浮點數、布林值、字串。 ######將null轉換為陣列時,結果是一個空數組:###
echo var_dump((array)null);  
//array(0) {

}
##########顯示轉換###########1.可以在變數前面加入強制類型轉換運算子:######
(int)(integer)
(float)(double)(real)
(bool)(boolean)
(string)
(array)
(object)
###這種方式並沒有改變變數的資料類型,而只是改變了表達式的資料類型。 ######2.使用settype(var, type)函數###
$var = true;  
settype($var, "integer");  
var_dump($var);  // int(1)
###可見,變數的型別和值都被修改了######3.使用intval()/floatval() /boolval()/strval()系列函數######注意,這些函數並不會修改變數的值###
$var = "0xff";  
$num = intval($var, 16);  
var_dump($var);  // string(4) "0xff"  
var_dump($num);  // int(255)
###如果intval()函數的第一個參數是字串,則可以再提供一個可選的第二參數,以指定字串中數值的進位。如果不提供此參數,則預設以十進位處理,參數指定為0,則會以字串的形式自動判斷(以0x開頭為十六進位。)######intval()不能用於物件類型######此函數傳回轉換後的整數值,如果轉換失敗,傳回0,如果參數是數組,則非空數組傳回1,空數組傳回0######boolval()取得參數的布林值。 ######floatval()###函數的參數###只能是標量類型,如整數、浮點數、布林值、字串。不能用於數組或物件。 ######

strval()函數的參數只能是標量類型,如整數、浮點數、布林值、字串。不能用於數組或物件。

什麼情況下不會進行隱含轉換

#算術運算子的兩個運算元都會轉換為數值類型。

字串連接符的兩個運算元都會轉換為字串型別。

在一個需要字串的表達式中,會自動轉換為string。例如在使用函數 echo 或 print 時,或在一個變數和一個 string 進行比較時,就會發生這種轉換。

以上就是 php中的型別轉換 的所有內容了,希望對大家有幫助,更多質料請在本站搜尋。

相關推薦:

#php型別轉換的判別

php型別轉換

PHP型別轉換的面試問題與答案解析

#

以上是php中的型別轉換的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn