
- PHP 教程
- PHP - 首頁
- PHP - 簡介
- PHP - 安裝
- PHP - 歷史
- PHP - 特性
- PHP - 語法
- PHP - Hello World
- PHP - 註釋
- PHP - 變數
- PHP - Echo/Print
- PHP - var_dump
- PHP - $ 和 $$ 變數
- PHP - 常量
- PHP - 魔術常量
- PHP - 資料型別
- PHP - 型別轉換
- PHP - 型別混合
- PHP - 字串
- PHP - 布林值
- PHP - 整數
- PHP - 檔案與 I/O
- PHP - 數學函式
- PHP - Heredoc 和 Nowdoc
- PHP - 複合型別
- PHP - 檔案包含
- PHP - 日期和時間
- PHP - 標量型別宣告
- PHP - 返回型別宣告
- PHP 運算子
- PHP - 運算子
- PHP - 算術運算子
- PHP - 比較運算子
- PHP - 邏輯運算子
- PHP - 賦值運算子
- PHP - 字串運算子
- PHP - 陣列運算子
- PHP - 條件運算子
- PHP - 展開運算子
- PHP - 空值合併運算子
- PHP - 鍵值比較運算子
- PHP 控制語句
- PHP - 決策
- PHP - If…Else 語句
- PHP - Switch 語句
- PHP - 迴圈型別
- PHP - For 迴圈
- PHP - Foreach 迴圈
- PHP - While 迴圈
- PHP - Do…While 迴圈
- PHP - Break 語句
- PHP - Continue 語句
- PHP 函式
- PHP - 函式
- PHP - 函式引數
- PHP - 按值傳遞
- PHP - 按引用傳遞
- PHP - 預設引數
- PHP - 具名引數
- PHP - 可變引數
- PHP - 返回值
- PHP - 傳遞函式
- PHP - 遞迴函式
- PHP - 型別提示
- PHP - 變數作用域
- PHP - 嚴格型別
- PHP - 匿名函式
- PHP - 箭頭函式
- PHP - 可變函式
- PHP - 區域性變數
- PHP - 全域性變數
- PHP 超全域性變數
- PHP - 超全域性變數
- PHP - $GLOBALS
- PHP - $_SERVER
- PHP - $_REQUEST
- PHP - $_POST
- PHP - $_GET
- PHP - $_FILES
- PHP - $_ENV
- PHP - $_COOKIE
- PHP - $_SESSION
- PHP 檔案處理
- PHP - 檔案處理
- PHP - 開啟檔案
- PHP - 讀取檔案
- PHP - 寫入檔案
- PHP - 檔案是否存在
- PHP - 下載檔案
- PHP - 複製檔案
- PHP - 追加檔案
- PHP - 刪除檔案
- PHP - 處理 CSV 檔案
- PHP - 檔案許可權
- PHP - 建立目錄
- PHP - 列出檔案
- 面向物件 PHP
- PHP - 面向物件程式設計
- PHP - 類和物件
- PHP - 建構函式和解構函式
- PHP - 訪問修飾符
- PHP - 繼承
- PHP - 類常量
- PHP - 抽象類
- PHP - 介面
- PHP - 特性
- PHP - 靜態方法
- PHP - 靜態屬性
- PHP - 名稱空間
- PHP - 物件迭代
- PHP - 封裝
- PHP - Final 關鍵字
- PHP - 過載
- PHP - 克隆物件
- PHP - 匿名類
- PHP Web 開發
- PHP - Web 概念
- PHP - 表單處理
- PHP - 表單驗證
- PHP - 表單郵件/URL
- PHP - 完整表單
- PHP - 檔案包含
- PHP - GET 和 POST
- PHP - 檔案上傳
- PHP - Cookie
- PHP - Session
- PHP - Session 選項
- PHP - 傳送郵件
- PHP - 淨化輸入
- PHP - Post-Redirect-Get (PRG)
- PHP - 快閃記憶體訊息
- PHP 高階
- PHP - MySQL
- PHP.INI 檔案配置
- PHP - 陣列解構
- PHP - 編碼規範
- PHP - 正則表示式
- PHP - 錯誤處理
- PHP - Try…Catch
- PHP - Bug 除錯
- PHP - 針對 C 開發人員
- PHP - 針對 PERL 開發人員
- PHP - 框架
- PHP - Core PHP 與框架
- PHP - 設計模式
- PHP - 過濾器
- PHP - JSON
- PHP - 異常
- PHP - 特殊型別
- PHP - 雜湊
- PHP - 加密
- PHP - is_null() 函式
- PHP - 系統呼叫
- PHP - HTTP 認證
- PHP - 交換變數
- PHP - Closure::call()
- PHP - 過濾後的 unserialize()
- PHP - IntlChar
- PHP - CSPRNG
- PHP - 預期
- PHP - Use 語句
- PHP - 整數除法
- PHP - 已棄用的特性
- PHP - 已移除的擴充套件和 SAPI
- PHP - PEAR
- PHP - CSRF
- PHP - FastCGI 程序
- PHP - PDO 擴充套件
- PHP - 內建函式
- PHP 有用資源
- PHP - 速查表
- PHP - 問答
- PHP - 快速指南
- PHP - 線上編譯器
- PHP - 有用資源
- PHP - 討論
PHP – 資料型別
術語“資料型別”指的是將資料分類到不同的類別。PHP 總共有八種資料型別,我們用它們來構建變數:
整數 - 沒有小數點的整數,例如 4195。
雙精度浮點數 - 浮點數,例如 3.14159 或 49.1。
布林值 - 只有兩個可能的值,要麼為真,要麼為假。
NULL - 僅有一個值:NULL 的特殊型別。
字串 - 字元序列,例如 'PHP 支援字串操作。'
陣列 - 其他值的命名和索引集合。
物件 - 程式設計師定義的類的例項,可以打包其他型別的值以及特定於類的函式。
資源 - 保留對 PHP 外部資源(如資料庫連線)的引用的特殊變數。
前五個是簡單型別,接下來的兩個(陣列和物件)是複合型別。複合型別可以打包任意型別的值,而簡單型別則不能。
在本章中,讓我們詳細討論這些 PHP 內建資料型別。
PHP 中的整數資料型別
沒有小數點的整數(例如 4195)在 PHP 中屬於 int 型別。整數資料型別是最簡單的型別。它們對應於簡單的整數,包括正數和負數。
int 是集合 Z = {..., -2, -1, 0, 1, 2, ...} 中的一個數字。
int 可以用十進位制(基數 10)、十六進位制(基數 16)、八進位制(基數 8)或二進位制(基數 2)表示法表示。
要使用八進位制表示法,數字前要加上 "0o" 或 "0O"。要使用十六進位制表示法,數字前要加上 "0x"。要使用二進位制表示法,數字前要加上 "0b"。
以下是一些 示例:
十進位制整數 - 201、4195、-15
八進位制整數 - 0010、0O12、-0O21
十六進位制整數 - 0x10、-0x100
二進位制整數 - 0b10101、-0b100
整數可以分配給變數,也可以用於表示式,例如:
$int_var = 12345; $another_int = -12345 + 12345;
PHP 中的雙精度浮點數資料型別
雙精度浮點數變量表示浮點數(也稱為“浮點數”、“雙精度浮點數”或“實數”),它們是帶有小數部分的數字。小數部分位於整數部分之後,由小數點符號 (.) 分隔。
注意 - 雙精度浮點數變數可以是正數、負數或零。
$var1 = 1.55 $var2 =-123.0
科學浮點數表示法
PHP 還允許使用科學表示法來表示帶有更多小數位數的浮點數。“E”或“e”符號用於分隔整數和小數部分。
− 1.2e3, 2.33e-4, 7E-10, 1.0E5
預設情況下,雙精度浮點數以所需的最小小數位數列印。請檢視以下 示例:
<?php $many = 2.2888800; $many_2 = 2.2111200; $few = $many + $many_2; print("$many + $many_2 = $few"); ?>
它產生以下 輸出:
2.28888 + 2.21112 = 4.5
PHP 中的布林值資料型別
bool 型別只有兩個值;它可以是真或假。bool 型別用於表達真值。
$bool1 = true; $bool2 = false;
您還可以使用整數“1”和“0”來表示真和假布林值:
$bool3 = 1; $bool4 = 0;
通常,返回 bool 值的運算子的結果將傳遞給控制結構,例如 if、while 或 do-while。例如,
if (TRUE) print("This will always print."); else print("This will never print.");
將其他資料型別解釋為布林值
以下是一組規則,您可以使用它們將其他資料型別解釋為布林值:
如果值是數字,則僅當該值等於零時才為假,否則該值為真。
如果值是字串,則當字串為空(字元數為零)或為字串“0”時為假,否則為真。
NULL 型別的值為假。
如果值是陣列,則當它不包含其他值時為假;否則為真。對於物件,包含值意味著具有已分配值的成員變數。
有效的資源為真(儘管某些在成功時返回資源的函式在不成功時將返回 FALSE)。
注意 - 不要使用雙精度浮點數作為布林值。
以下每個變數在用作布林值上下文中時,其名稱中都包含真值。
$true_num = 3 + 0.14159; $true_str = "Tried and true" $true_array[49] = "An array element"; $false_array = array(); $false_null = NULL; $false_num = 999 - 999; $false_str = "";
PHP 中的字串資料型別
字串是一系列字元,例如“PHP 支援字串操作”。
在 PHP 中,字元與位元組相同。這意味著 PHP 僅支援 256 個字元集,因此不提供本機 Unicode 支援。
PHP 支援單引號和雙引號兩種字串格式。以下兩種表示方式在 PHP 中都是有效的:
$string_1 = "This is a string in double quotes"; $string_2 = 'This is a somewhat longer, singly quoted string';
以下是一些關於字串型別的更多示例:
$string_39 = "This string has thirty-nine characters"; $string_0 = ""; // a string with zero characters
單引號字串幾乎按字面原樣處理,而雙引號字串會將變數替換為其值,並對某些字元序列進行特殊解釋。
<?php $variable = "name"; $literally = 'My $variable will not print!'; print($literally); print "\n"; $literally = "My $variable will print!"; print($literally); ?>
執行此程式碼時,將產生以下輸出:
My $variable will not print! My name will print
字串長度沒有人工限制。在可用記憶體範圍內,您應該能夠建立任意長度的字串。
由雙引號分隔的字串(如 "this")會被 PHP 以以下兩種方式預處理:
以反斜槓 (\) 開頭的某些字元序列將替換為特殊字元。
變數名(以$開頭)將替換為其值的字串表示形式。
轉義序列替換如下:
\n 將替換為換行符
\r 將替換為回車符
\t 將替換為製表符
\$ 將替換為美元符號本身 ($)
\" 將替換為單個雙引號 (")
\\ 將替換為單個反斜槓 (\)
PHP 還具有Heredoc 和Nowdoc 字串資料型別的表示形式。
字串資料型別的 Heredoc 表示形式
您可以使用 heredoc 將多行賦值給單個字串變數:
<?php $channel =<<<_XML_ <channel> <title>What's For Dinner</title> <link>http://menu.example.com/ </link> <description>Choose what to eat tonight.</description> </channel> _XML_; echo <<< END This uses the "here document" syntax to output multiple lines with variable interpolation. Note that the here document terminator must appear on a line with just a semicolon. no extra whitespace! END; print $channel; ?>
執行此程式碼時,將產生以下輸出:
This uses the "here document" syntax to output multiple lines with variable interpolation. Note that the here document terminator must appear on a line with just a semicolon. no extra whitespace! <channel> <title>What's For Dinner</title> <link>http://menu.example.com/ </link> <description>Choose what to eat tonight.</description> </channel>
字串資料型別的 Nowdoc 表示形式
heredoc 識別符號的所有規則也適用於 nowdoc 識別符號。nowdoc 的指定方式與heredoc相同,但在 nowdoc 內部沒有解析。您可以使用 nowdoc 結構嵌入大塊文字,而無需使用任何跳脫字元。
nowdoc 使用與 heredoc 相同的 <<< 序列進行標識,但識別符號用單引號括起來,例如 <<<'EOT'。nowdoc 適用於單引號字串,就像 heredoc 適用於雙引號字串一樣。
請檢視以下示例:
<?php echo <<<'IDENTIFIER' As the cat cleared its throat with a refined "Meow", the squirrel chirped excitedly about its latest discovery of a hidden stash of peanut treasure! IDENTIFIER; ?>
執行程式碼並檢查其輸出:
As the cat cleared its throat with a refined "Meow", the squirrel chirped excitedly about its latest discovery of a hidden stash of peanut treasure!
PHP 中的 Null 資料型別
在 PHP 中,null 表示一種特殊型別,它只有一個值:NULL。未定義和 unset() 變數將解析為值 "null"。
程式設計師通常在 PHP 中使用 Null 資料型別來初始化變數或指示值缺失。
要為變數賦予 NULL 值,只需像這樣賦值:
$my_var = NULL;
特殊的常量 NULL 通常是大寫的,但實際上它是不區分大小寫的;您也可以鍵入:
$my_var = null;
已分配 NULL 值的變數具有以下屬性:
在布林上下文中,它評估為 FALSE。
當使用 IsSet() 函式測試時,它返回 FALSE。
注意:PHP 中變數的資料型別是在執行時根據分配給它們的值確定的。
PHP 中的陣列資料型別
PHP 中的陣列是有序對映,一個鍵與一個或多個值相關聯。PHP 陣列使用 array() 函式定義,或者使用簡寫形式,其中資料放在方括號中。
請檢視以下關聯陣列示例:
使用 array() 函式
$arr = array( "foo" => "bar", "bar" => "foo", );
使用簡寫形式
$arr = [ "foo" => "bar", "bar" => "foo", ];
PHP 中的陣列也可以使用“鍵值對”語法定義。這稱為索引陣列。
$arr = array("foo", "bar", "hello", "world");
在多維陣列中,主陣列中的每個元素也可以是陣列。並且,子陣列中的每個元素可以是陣列,依此類推。多維陣列中的值使用多個索引訪問。
注意:在 PHP 中,複合資料型別用於儲存資料集合,包括陣列和物件。
PHP 中的物件資料型別
物件型別是程式設計師定義的類的例項,它可以打包其他型別的值以及特定於該類的函式。
要建立新物件,請使用new 語句例項化一個類:
class foo { function bar() { echo "Hello World."; } } $obj = new foo; $obj->bar();
PHP 中的資源資料型別
資源是特殊的變數,它們儲存對 PHP 外部資源的引用(例如檔案流或資料庫連線)。
這是一個檔案資源的示例:
$fp = fopen("foo.txt", "w");
屬於上述任何型別的資料都儲存在變數中。但是,由於 PHP 是一種動態型別語言,因此無需指定變數的型別,因為這將在執行時確定。
示例:gettype() 函式
gettype() 函式有助於找出儲存在變數中的資料型別:
<?php $x = 10; echo gettype($x) . "\n"; $y = 10.55; echo gettype($y) . "\n"; $z = [1,2,3,4,5]; echo gettype($z); ?>
執行此程式碼時,將產生以下輸出:
integer double array