红穆笔记
首頁 語言筆記 PHP強制轉換類型
語言筆記 PHP PHP採集 PHP與mysql

PHP強制轉換類型

PHP强制转换类型

獲取數據類型

1.如果想查看某個表達式的值和類型,用var_dump()。
2.如果只是想得到一個易讀懂的類型的表達方式用於調試,用 gettype()。
3.要查看某個類型,不要用 gettype(),而用is_type() 函數。

字符串轉換爲數值

當一個字符串被當作數字來求值時,根據以下規則來決定結果的類型和值。

如果包括“.”,“e”或“E”其中任何一個字符的話,字符串被當作 float 來求值。否則就被當作整數。

該值由字符串最前面的部分決定。如果字符串以合法的數字數據開始,就用該數字作爲其值,否則其值爲 0(零)。

合法數字數據由可選的正負號開始,後面跟着一個或多個數字(可選地包括十進制分數),後面跟着可選的指數。

指數是一個“e”或者“E”後面跟着一個或多個數字。

注:不要指望在將一個字符轉換成整型時能夠得到該字符的編碼(可能也會在 C 中這麼做)。如果希望在字符編碼和字符之間轉換,請使用 ord() 和 chr() 函數。

強制類型強制轉換

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

允許的強制轉換有:

    (int),(integer)            - 轉換成整型
    (bool),(boolean)           - 轉換成布爾型
    (float),(double),(real)    - 轉換成浮點型
    (string)                  - 轉換成字符串
    (array)                    - 轉換成數組
    (object)                   - 轉換成對象

注意在括號內允許有空格和製表符
還可以用settype ( mixed var, string type )進行強制轉換.

強制轉換爲布爾值 (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)
?>

強制轉換爲整形(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

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

精度: 0.12345678901234 // double,real都一樣
數據的丟失參 字符串轉換爲數值

強制換爲字符串 (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(),對於調試來說,這些是更好的打印值的方法。

可以將 PHP 的值轉換爲字符串以永久地儲存它們。

這種方法被稱爲序列化,可以用函數 serialize() 來完成該操作。如果在安裝 PHP 時建立了 WDDX 支持,還可以將 PHP 的值序列化爲 XML 結構。

強制轉換爲數組 (array)

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

如果將一個對象轉換成一個數組,所得到的數組的元素爲該對象的屬性(成員變量),其鍵名爲成員變量名。

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

 

轉換爲對象 (object)

如果將一個對象轉換成對象,它將不會有任何變化。如果其它任何類型的值被轉換成對象,內置類 stdClass 的一個實例將被建立。如果該值爲 NULL,則新的實例爲空。數組轉換成對象將使鍵名成爲屬性名並具有相對應的值。對於任何其它的值,名爲 scalar 的成員變量將包含該值

轉換爲資源 (無法轉換)

由於資源類型變量保存有爲打開文件、數據庫連接、圖形畫布區域等的特殊句柄,因此無法將其它類型的值轉換爲資源。

微信赞赏

微信

支付宝赞赏

支付寶

✍️ 作者: 紅穆

網站管理員 · 感謝閱讀,更多精彩內容敬請關注

作者主頁 查看主頁 →

相關文章

php 特殊字符转义与还原

php 特殊字符轉義與還原 語言筆記 PHP PHP採集 PHP與mysql

轉義字符是一種特殊的字符常量。轉義字符以反斜線"&quot;開頭,後跟一個或幾個字符。轉義字符具有特定的含義,不同於字符原有的意義,故稱“轉義”字符。轉義字符的用處1:將普通字符轉爲特殊用途,如後退鍵,回車鍵等。2:用來將特殊意義的字符轉換回它原來的意義。3:在數據寫入數據庫前,都會使用轉義字符(函…
👁 178
PHP mysqli

PHP mysqli 語言筆記 PHP PHP採集 PHP與mysql

執行鍼對數據庫的查詢:刪除數據庫&lt;?php // 假定數據庫用戶名:root,密碼:123456,數據庫:RUNOOB $con=mysqli_connect(&quot;localhost&quot;,&quot;root&quot;,&quot;123456&quot;,&quot;RUN…
👁 232
PHP中mysqli

PHP中mysqli 語言筆記 PHP PHP採集 PHP與mysql

mysqli_num_rows()這個函數只用於SELECT查詢方法而mysqli_affected_rows()函數是記錄上一個sql語句對整個數據庫的影響從而把受影響的數據個數返回,這個主要用於INSERT(插入)、UPDATE(替換)、DELETE(刪除)。
👁 145

推薦閱讀

资源网站typecho001模板

資源網站typecho001模板 程序筆記 Typecho

typecho001模板板本請勿修改本模板文件夾名稱 文件夾名稱爲:typecho001 1.4修復文章頁面js輸出問題1.3修復未安裝插件時的報錯提示優化列表頁代碼輸出1.2修復評論功能增加自定義首頁標題1.1修復評論回覆不對稱功能添加首頁單獨的標題設置功能增加網站favicon.ico圖標增加一…
👁 197
typecho分页样式的修改

typecho分頁樣式的修改 程序筆記 Typecho

大人,時代變了!目前typecho最完美的解決方案了,因爲百度只能看到固定思維的代碼。實際生成的html代碼,乾淨到讓人窒息完全的自定義,包括給li元素加上class,給a元素加上class,給上一頁下一頁加上class,去除typecho自帶用於表示更多的li標籤。甚至裏面的內容我也能添加一些文字…
👁 516
typecho文章页评论样式修改

typecho文章頁評論樣式修改 程序筆記 Typecho

需求使用 typecho 進行模板開發的時候,默認評論樣式很難看。因此需要評論需要重新輸出或進行樣式設定。默認的評論模板文件路徑是:comments.php主要使用的相關變量&lt;?php $comments-&gt;gravatar('40', ''); ?&gt; //頭像,有兩個參數,大小、…
👁 387
Typecho 对数据库的增删改查操作方法 API

Typecho 對數據庫的增刪改查操作方法 API 程序筆記 Typecho

Typecho數據庫提供了非常易用的api,和原生SQL寫法沒有太大的差別,同時也很好地處理了SQL常見的安全問題,如sql注入。本文從實用角度出發,介紹了typecho操作數據庫的常用場景以及相關api用法。表創建和刪除在Typecho插件開發過程中,往往需要創建自己的表。上文提到Typecho_…
👁 551
PHP ob函数记录

PHP ob函數記錄 語言筆記 PHP

下面3個函數的用法 ob_get_contents(); ob_end_clean(); ob_start(); 可以藉助這幾個函數實現緩衝本地文件,以及執行本地腳本代碼。 使用ob_start()把輸出的代碼存到緩衝區,頁面不會顯示出來; 然後用ob_get_contents得到緩衝區的數據。 o…
👁 140
Typecho调用热门评论文章和调用最新文章的方法总结

Typecho調用熱門評論文章和調用最新文章的方法總結 程序筆記 Typecho

Typecho文章調用Typecho程序在設計主題的時候,側欄有些時候需要調用熱評文章或者最新文章。我們可以在指定的位置通過腳本直接調用。在這篇文章整理這個調用文章的方法,以後在有需要的模板中可以直接調用使用。其實設計主題就那麼回事,靜態模板搞定後,就是直接調用。最新文章調用 &lt;?php $t…
👁 295