PHP 數據類型

PHP支持8種原始數據類型。

四種標量類型:
? boolean(佈爾型)
? integer(整型)
? float(浮點型,也稱作 double)
? string(字符串)

兩種復合類型:
? array(數組)
? object(對象)

最後是兩種特殊類型:
? resource(資源)
? NULL(無類型)

為瞭確保代碼的易讀性,還有一些偽類型:
? mixed(混合類型)
? number(數字類型)
? callback(回調類型)
偽變量 $…

變量的類型通常不是由程式員設定的,確切地說,是由PHP根據該變量使用的上下文在運行時決定的。
如果想查看某個表達式的值和類型,用 var_dump() 函數。如果隻是想得到一個易讀懂的類型的表達方式用於調試,用 gettype() 函數。要查看某個類型,不要用 gettype(),而用 is_type 函數。如果要將一個變量強制轉換為某類型,可以對其使用強制轉換或者 settype() 函數。

【boolean】
要指定一個佈爾值,使用關鍵字 TRUE 或 FALSE。兩個都不區分大小寫。
轉換為佈爾值
要明確地將一個值轉換成 boolean,用 (bool) 或者 (boolean) 來強制轉換。
當轉換為 boolean 時,以下值被認為是 FALSE:
? 佈爾值 FALSE 本身
? 整型值 0(零)
? 浮點型值 0.0(零)
? 空字符串,以及字符串 "0"
? 不包括任何元素的數組
? 不包括任何成員變量的對象(僅 PHP 4.0 適用)
? 特殊類型 NULL(包括尚未賦值的變量)
? 從空標記生成的 SimpleXML 對象

【integer】
整型值可以使用十進制,十六進制,八進制或二進制表示,前面可以加上可選的符號(- 或者 +)。
二進制表達的 integer 自 PHP 5.4.0 起可用。要使用八進制表達,數字前必須加上 0(零)。要使用十六進制表達,數字前必須加上 0x。要使用二進制表達,數字前必須加上 0b。
Integer 值的字長可以用常量 PHP_INT_SIZE來表示,自 PHP 4.4.0 和 PHP 5.0.5後,最大值可以用常量 PHP_INT_MAX 來表示。
如果給定的一個數超出瞭 integer 的范圍,將會被解釋為 float。同樣如果執行的運算結果超出瞭 integer 范圍,也會返回 float。
PHP 中沒有整除的運算符。1/2 產生出 float 0.5。值可以舍棄小數部分強制轉換為 integer,或者使用 round() 函數可以更好地進行四舍五入。
轉換為整型
要明確地將一個值轉換為 integer,用 (int) 或 (integer) 強制轉換。

【float】
浮點數的精度有限。以十進制能夠精確表示的有理數如 0.1 或 0.7,無論有多少尾數都不能被內部所使用的二進制精確表示,因此不能在不丟失一點點精度的情況下轉換為二進制的格式。這就會造成混亂的結果:例如,floor((0.1+0.7)*10) 通常會返回 7 而不是預期中的 8,因為該結果內部的表示其實是類似 7.9999999999999991118…。
所以永遠不要相信浮點數結果精確到瞭最後一位,也永遠不要比較兩個浮點數是否相等。如果確實需要更高的精度,應該使用任意精度數學函數或者 gmp 函數。

【NULL】
特殊的 NULL 值表示一個變量沒有值。NULL 類型唯一可能的值就是 NULL。
在下列情況下一個變量被認為是 NULL:
? 被賦值為 NULL。
? 尚未被賦值。
? 被 unset()。

【類型轉換的判別】
允許的強制轉換有:
? (int), (integer) – 轉換為整形 integer
? (bool), (boolean) – 轉換為佈爾類型 boolean
? (float), (double), (real) – 轉換為浮點型 float
? (string) – 轉換為字符串 string
? (array) – 轉換為數組 array
? (object) – 轉換為對象 object
? (unset) – 轉換為 NULL (PHP 5)

【Variable handling 函數】
?boolval — Get the boolean value of a variable
?debug_zval_dump — Dumps a string representation of an internal zend value to output
?doubleval — floatval 的別名
?empty — 檢查一個變量是否為空
?floatval — 獲取變量的浮點值
?get_defined_vars — 返回由所有已定義變量所組成的數組
?get_resource_type — 返回資源(resource)類型
?gettype — 獲取變量的類型
?import_request_variables — 將 GET/POST/Cookie 變量導入到全局作用域中
?intval — 獲取變量的整數值
?is_array — 檢測變量是否是數組
?is_bool — 檢測變量是否是佈爾型
?is_callable — 檢測參數是否為合法的可調用結構
?is_double — is_float 的別名
?is_float — 檢測變量是否是浮點型
?is_int — 檢測變量是否是整數
?is_integer — is_int 的別名
?is_long — is_int 的別名
?is_null — 檢測變量是否為 NULL
?is_numeric — 檢測變量是否為數字或數字字符串
?is_object — 檢測變量是否是一個對象
?is_real — is_float 的別名
?is_resource — 檢測變量是否為資源類型
?is_scalar — 檢測變量是否是一個標量
?is_string — 檢測變量是否是字符串
?isset — 檢測變量是否設置
?print_r — 打印關於變量的易於理解的信息。
?serialize — 產生一個可存儲的值的表示
?settype — 設置變量的類型
?strval — 獲取變量的字符串值
?unserialize — 從已存儲的表示中創建 PHP 的值
?unset — 釋放給定的變量
?var_dump — 打印變量的相關信息

?var_export — 輸出或返回一個變量的字符串表示

 

<!--?php
	// boolean
	$bFlag = true;
	if($bFlag)
	{
		echo '變量$bFlag為真'.'';
	}
	else
	{
		echo '變量$bFlag為假'.'
';
	}	
	
	// integer
	$iVal = 12345678;
	echo '十進制的結果'.$iVal.'
';
	
	$a1 = 1234; // 十進制數
	$a2 = -123; // 負數
	$a3 = 0123; // 八進制數 (等於十進制 83)
	$a4 = 0x1A; // 十六進制數 (等於十進制 26)
	
	$large_number = 2147483647;
	echo var_dump($large_number).'
'; 
	
	var_dump(25/7);         // float(3.5714285714286) 
	var_dump((int) (25/7)); // int(3)
	
	// float
	$fVal = 3.141592653;
	echo '變量$fVal的值是'.$fVal.'
';
	
	// null
	$str1 = null;
	$str2 = 'str';
	if(is_null($st1))
	{
		echo '$str1為null'.'
';
	}
	
	// 調試某個類型
	echo gettype($str2).'
';
	if(is_string($str2))
	{
		echo '$str2為string類型'.'
';
	}	
	
	// 銷毀對象
	unset($str2); 
	if(is_null($st1))
	{
		echo '$str2為null'.'
';
	}
	
?>

 

發佈留言