首頁 >後端開發 >PHP問題 >php有哪些型別強制轉換?

php有哪些型別強制轉換?

coldplay.xixi
coldplay.xixi原創
2020-07-22 10:29:313087瀏覽

php強制轉換類型有:1、轉換成整數;2、轉換成布林型;3、轉換成浮點型;4、轉換成字串;5、轉換成陣列;6、轉換成對象。

php有哪些型別強制轉換?

php強制轉換型別有:

PHP 中的型別強制轉換和C 中的非常像:在要轉換的變數之前加上用括號括起來的目標類型。

允許的強制轉換有:

  • (int),(integer)            - 轉換為整數

  • #(bool ),(boolean)           - 轉換成布爾型

  • (float),(double),(real)    - 轉換成浮點型

  • (string)                  - 轉換成字串

  • (array)            #      - 轉換成物件

  • 注意在括號內允許有空格和製表符

  • 也可以用settype ( mixed var, string type )進行強制轉換.

# 1.強制轉換為布林值(bool)|(boolean)

要明示地將一個值轉換成boolean,用(bool) 或(boolean) 來強制轉換。但是很多情況下不需要用強制轉換,因為當運算符,函數或流程控制需要一個 boolean 參數時,該值會被自動轉換。 當轉換為boolean 時,以下值被認為是FALSE: 

布林值FALSE

整數值0(零)

浮點型值0.0(零)

空白字串和字串"0" 

沒有成員變數的陣列

沒有單元的物件(僅適用於PHP 4)

特殊類型NULL(包括尚未設定的變數)

所有其它值都被視為TRUE(包括任何資源)。

<?php
var_dump((bool) ""); // bool(false)
var_dump((bool) 1); // bool(true)
var_dump((bool) -2); // bool(true)
var_dump((bool) "foo"); // bool(true)
var_dump((bool) 2.3e5); // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array()); // bool(false)
var_dump((bool) "false"); // bool(true)
?>

2.強制轉換為整形(int)|(integer)

#要明示地將一個值轉換為integer,用(int) 或(integer)強制轉換。不過大多數情況下都不需要強制轉換,因為當運算符,函數或流程控制需要一個 integer 參數時,值會自動轉換。也可以透過函數 intval() 來將一個值轉換成整數型。 a.從bool轉換

b.從浮點數轉換     取整,超出範圍,結果不定

c.從字串轉換     參考字串轉換為數值

d.從其它型別轉換   先換成bool值,再轉換

#絕對不要將未知的分數強制轉換為integer,這樣有時會導致意外的結果。

<?php
echo (int) ( (0.1+0.7) * 10 ); // 显示 7
?>
$str = "123.456abc7"; // (int)123
echo (int)$str;
$str = "abc123.456";   // (int)0
$str = true;           // (int)1
$str = false;          // (int)0

3.強制轉換成浮點型(int)|(double)|(real)|doubleval()|floatval()|intval() 

#精確度: 0.12345678901234 // double,real都一樣資料的遺失參考字串轉換為數值

    

#4.強制換為字串(string) |strval()

可以用(string) 標記或strval() 函數將一個值轉換為字串。當某表達式需要字串時,字串的轉換會在表達式範圍內自動完成。例如使用

echo()

print() 函數時,或將變數值與字串進行比較的時候。 布林值 TRUE 將轉換為字串 "1",而值 FALSE 將表示為 ""(即空字串)。這樣就可以隨意地在布林值和字串之間進行比較。

  • 整數或浮點數數值在轉換成字串時,字串由表示這些數值的數字字元組成(浮點數也包含有指數部分)。

  • 陣列將轉換成字串 "Array",因此無法透過 echo() 或 print() 函數來輸出陣列的內容。請參考下文以獲取更多提示。

  • 物件將被轉換成字串 "Object"。如果因為調試需要,需要將物件的成員變數列印出來,請閱讀下文。如果希望得到該物件所依附的類別的名稱,請使用函數 get_class()。自 PHP 5 起,如果適合可以用 __toString() 方法。

  • 資源類型總是以 "Resource id #1" 的格式轉換成字串,其中 1 是 PHP 在執行時間給資源指定的唯一識別。如果希望取得資源的類型,請使用函數 get_resource_type()。

  • NULL 將會轉換成空字串。

  • 如以上所示,將陣列、物件或資源列印出來,並不能提供任何關於這些值本身的有用的信息。請參閱函數

    print_r()
var_dump()

,對於偵錯來說,這些是更好的列印值的方法。 <p>可以將 PHP 的值轉換為字串以永久儲存它們。這種方法稱為序列化,可以用函數<code>serialize()來完成這個操作。如果在安裝 PHP 時建立了 WDDX 支持,也可以將 PHP 的值序列化為 XML 結構。

5. 強制轉換為陣列(array)

對於任何的類型:整數、浮點、字串、布林和資源,如果將一個值轉換為數組,將會得到一個僅有一個元素的數組(其下標為0),該元素即為此標量的值。

如果將一個物件轉換成一個數組,所得到的數組的元素為該物件的屬性(成員變數),其鍵名為成員變數名稱。

如果將一個 NULL 值轉換成數組,將會得到一個空數組。

     

6. 轉換為物件 (object)

如果將物件轉換成對象,它將不會有任何變化。

如果其它任何類型的值被轉換成對象,內建類別 stdClass 的一個實例將會被建立。

如果該值為 NULL,則新的實例為空。陣列轉換成物件將使鍵名成為屬性名並具有相對應的值。

對於任何其它的值,名為scalar 的成員變數將包含該值

7.轉換為資源(無法轉換)

由於資源類型變數保存有為開啟檔案、資料庫連線、圖形畫布區域等的特殊句柄,因此無法將其它類型的值轉換為資源。

注意

  • HTML 表單並不會傳遞整數、浮點數或布林值,它們只傳遞字串。要檢測一個字串是不是數字,可以使用 is_numeric() 函數。

  • 在沒有定義變數 $x 的時候,諸如 if ($x) 的用法會導致一個 E_NOTICE 等級的錯誤。所以,可以考慮用 empty

相關學習推薦:PHP程式設計從入門到精通

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

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