1. 程式人生 > >PHP強化之07 - 資料型別

PHP強化之07 - 資料型別

----- 最後更新【2018-12-6】-----

簡介

在PHP程式中,一共支援9種原始資料型別。我們將它們劃分為三類:標量資料型別、複合資料型別和特殊資料型別。

一、標量資料型別

標量資料型別有4種,包括布林型、字串、整型、浮點型。

1、boolean
布林變數是PHP變數中最簡單的,它儲存一個True或者False值,其中True或者False是PHP的內部關鍵字。
定義一個布林型的變數,只需將True或者False賦值給該變數即可。

2、string
字串是連續的字元序列,字串中的每個字元只佔用一個位元組。
在PHP中,定義字串有4種方式:單引號,雙引號,Heredoc、Nowdoc。

3、integer
整數資料型別只能包含整數,這些資料型別可以是正數或負數。在32位的作業系統中,有效的範圍是-2 147 483 648~2147 483 647(也就是 -2^31 ~ 2^31 -1)。
整型值可以使用十進位制,十六進位制,八進位制或二進位制表示,前面可以加上可選的符號(- 或者 +)。

4、float
浮點型(也叫浮點數 float,雙精度數 double 或實數 real)。
浮點資料型別可以用來儲存數字,也可以儲存小數。它提供的精度比整數大得多。

二、複合資料型別

複合資料型別包括陣列、物件和可呼叫。

5、array
陣列可以是二維、三維或者多維,陣列中的各元素可以是string、integer或double,也可以是array。

6、object
要建立一個新的物件 object,使用 new 語句例項化一個類

7、callable
自 PHP 5.4 起可用 callable 型別指定回撥型別 callback,也就是說
callback可以等同於callable 。

三、特殊資料型別。

特殊資料型別包括資源和無型別。

8、resource
資源是一種特殊的變數,儲存在外部資源的一個應用,資源是通過函式來進行建立的。

9、null
特殊的 NULL 值表示一個變數沒有值。NULL 型別唯一可能的值就是 NULL,任何變數的初始值都是null。

如下情況一個變數會被認為是 NULL:被賦值為 NULL、尚未被賦值(或未定義的變數)、被 unset()。

四、偽型別

偽型別(pseudo-types) 是 PHP 文件裡用於指示引數可以使用的型別和值。 請注意,它們不是 PHP 語言裡原生型別。

1、mixed(混合型別)
mixed 說明一個引數可以接受多種不同的(但不一定是所有的)型別。
例如 gettype() 可以接受所有的 PHP 型別,str_replace() 可以接受字串和陣列。

2、number(數字型別)
number 說明一個引數可以是 integer 或者 float。

3、callback(回撥型別,又稱為 callable)
本文件中在 PHP 5.4 引入 callable 型別之前使用 了 callback 偽型別。二者含義完全相同。

4、array|object(陣列 | 物件型別)
array|object 意思是引數既可以是 array 也可以是 object。

5、void(無型別)
void 作為返回型別意味著函式的返回值是無用的。void 作為引數列表意味著函式不接受任何引數。

五、型別的判斷與轉換

1、判斷與轉換參考表

型別 強制轉換 轉換函式 型別判斷
通用方法 settype() gettype()
整型 (int), (integer) intval() is_integer()
浮點型 (float), (double), (real) is_float()
布林型 (bool), (boolean) is_bool()
字串 (string) strval() is_string()
陣列 (array) array() is_array()
物件 (object)
資源 is_resource()
NULL (unset) unset() is_null()
二進位制字串 (binary)
數字或數字字串 is_numeric()
標量(integer/float/string/boolean) is_scalar()

2、獲取變數的型別

string gettype ( mixed $var )    //獲取變數的型別

注意:
1)不要使用 gettype() 來測試某種型別,因為其返回的字串在未來的版本中可能需要改變。此外,由於包含了字串的比較,它的執行也是較慢的。
2)當需要判斷的型別的時候,建議使用 is_* 函式代替。

六、參考

官方手冊:http://php.net/manual/zh/language.types.intro.php