數據類型轉換
轉換爲
boolean
false
:false
,0
,0.0
,""
,"0"
, 空數組, 空對象,NULL
, 未賦值變量
true
: 其他轉換爲
integer
(32位最大值約爲20億)
從boolean
轉換:false
產生0
,true
產生1
;
從float
轉換:向下取整。如果超出了整數範圍,則結果爲未定義的整型;Warning 絕不要將未知的分數強制轉換爲 integer,這樣有時會導致不可預料的結果。
<?php
echo (int) ( (0.1+0.7) * 10 ); // 顯示 7!
?>
從
string
轉換:如果該字符串沒有包含'.'
,'e'
或'E'
並且其數字值在整型的範圍之內,該字符串將被當成integer
來取值。字符串的開始部分決定了它的值。如果該字符串以合法的數值開始,則使用該數值。否則其值爲0
。合法數值由可選的正負號,後面跟着一個或多個數字(可能有小數點),再跟着可選的指數部分。指數部分由'e'
或'E'
後面跟着一個或多個數字構成。字符串後面不合法值將被忽略;
從其他類型轉換:沒有定義從其它類型轉換爲整型的行爲。不要依賴任何現有的行爲,因爲它會未加通知地改變。轉換爲
float
從string
轉換:參閱string 轉換爲 integer
從其他類型轉換:對於其它類型的值,類似於先將值轉換成整型,然後再轉換成浮點。轉換爲
string
從boolean
轉換:true
轉換爲"1"
,false
轉換爲""
。
從integer
和float
轉換:轉換爲數字的字面樣式的string
(包括float
中的指數部分)。使用指數計數法的浮點數(4.1E+6
)也可轉換。
從array
轉換:轉換爲字符串"Array"
。
從object
轉換:轉換爲字符串"Object"
。注:
PHP_EOL
:PHP換行符轉換爲
array
從integer
,float
,string
,boolean
,resource
轉換:得到一個僅有一個元素的數組,其下標爲 0,該元素即爲此標量的值。換句話說,(array)$scalarValue
與array($scalarValue)
完全一樣。
從object
轉換:結果爲一個數組,其單元爲該對象的屬性,鍵名爲成員變量名。例外:1. 整數屬性不可訪問;2. 私有變量前會加上類名作前綴;3. 保護變量前會加上一個 ‘*’ 做前綴。這些前綴的前後都各有一個 NULL 字符。這會導致一些不可預知的行爲:<?php class A { private $A; // This will become '\0A\0A' } class B extends A { private $A; // This will become '\0B\0A' public $AA; // This will become 'AA' } var_dump((array) new B()); ?>
從
NULL
轉換:得到一個空數組。注:
如果在數組定義中多個單元都使用了同一個鍵名,則只使用了最後一個,之前的都被覆蓋了。
數組 key 會有如下的強制轉換:- 包含有合法整型值的字符串會被轉換爲整型。例如鍵名 “8” 實際會被儲存爲 8。但是 “08” 則不會強制轉換,因爲其不是一個合法的十進制數值。
- 浮點數也會被轉換爲整型,意味着其小數部分會被捨去。例如鍵名 8.7 實際會被儲存爲 8。
- 布爾值也會被轉換成整型。即鍵名 true 實際會被儲存爲 1 而鍵名 false 會被儲存爲 0。
- Null 會被轉換爲空字符串,即鍵名 null 實際會被儲存爲 “”。
- 數組和對象不能被用爲鍵名。堅持這麼做會導致警告:Illegal offset type。
轉換爲
object
從object
轉換:不會有任何變化。
從array
轉換:鍵名成爲屬性名並具有相對應的值(數字鍵除外,不迭代就無法被訪問)。
從其他任何類型轉換:會創建一個內置類stdClass
的實例。如果該值爲NULL
,則新的實例爲空。
數據類型轉換
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.