PHP變量類型
將信息存儲在一個PHP程序中的主要方法是使用變量。
這裡是了解PHP中的變量重要的幾個知識。
-
在PHP中所有的變量都標注有一個前導美元符號 ($).
-
一個變量的值是其最近分配的值.
-
變量賦以=運算符,左側的為變量名稱,在右側則是要計算的表達式.
-
變量可以,但也可以不需要賦值前必須聲明,也就是說,可聲明可不聲明.
-
PHP中的變量冇有固有類型 - 一個變量不用事先知道它是會被用來存儲一個數字還是字符串.
-
他們被使用之前變量有分配默認值.
-
在必要的時候,PHP能非常完好地自動將類型轉換從一種類型到另一種類型.
-
PHP變量與Perl類似.
PHP總共有八個數據類型,可用它來構建變量:
-
整型: 全是數字,冇有小數點,如 4195.
-
浮點型: 是浮點數,如 3.14159 或 49.1.
-
布爾型: 隻有兩個可能的值:true或false。
-
NULL: 是一種特殊類型,隻具有一個值: NULL.
-
字符串: 是字符的序列,如“PHP支持的字符串操作."
-
數組: 命名和索引的其他值的集合。
-
對象: 是程序員定義的類,它可以打包兩個其他種類的值和函數所特有的類的實例。
-
資源: 是外部引用的資源保持到PHP(如數據庫連接)的特殊變量。
前麵5個是“簡單類型”, 而接下來的兩個(數組和對象)是複合 - 複合類型可以打包任意類型的其他任意值,而簡單類型是不能的。
我們將在本章節隻解釋比喻的數據類型。數組和對象將另外章節在了解和學習。
整型:
他們全是數字,冇有小數點,比如4195。他們是最簡單的類型。它們對應於簡單的整數,正數和負數。整數可以分配給變量,也可以在表達式中使用,就像這樣:
$int_var = 12345; $another_int = -12345 + 12345;
整數可以是十進製(基數為10),八進製(基數為8)和十六進製(基數為16)格式。十進製格式是默認的,八進製整數以0開頭指定,十六進製數以0x。
對於最常見的平台上,最大整數為(2 **31-1)(或2,147,483,647),最小(最負)是整數。 (2 **31-1)(或2,147,483,647)。
浮點數:
它們常見的如3.14159 或 49.1。默認情況下,用浮點數所需的小數位數的最小數量。例如,代碼:
$many = 2.2888800; $many_2 = 2.2111200; $few = $many + $many_2; print(.$many + $many_2 = $few<br>.);
它在瀏覽器產生以下輸出:
2.28888 + 2.21112 = 4.5
布爾類型:
它們隻有兩個可能的值:true或false。 PHP提供了幾個常量,尤其是用作布爾值:TRUE和FALSE,它可以用來像這樣:
if (TRUE) print("This will always print<br>"); else print("This will never print<br>");
其他類型也可以被認為布爾值:
下麵是規則決定的任何值布爾類型的已經不是“真相”:
-
如果值是一個數字,如果恰好等於零那麼它為false,否則為true。
-
如果該值是一個字符串,如果該字符串是空的(具有零字符)或者是字符串“0”那麼它為false,否則都為true。
-
NULL類型的值始終是false.
-
如果該值是一個數組,如果它不包含任何其他值那麼它是false,否則它的值為 true。對於一個對象,其中包含一個值是指具有已賦值的成員變量。
-
有效的資源的值是true(雖然有些函數返回的資源時,他們不成功將返回FALSE)。
-
不要用double為布爾值。
下麵每個變量都有嵌在它的名字,當它被用在布爾上下文中的真值。
$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 = "";
NULL:
NULL是一種特殊類型的隻有一個值:NULL。給一個變量NULL值,分配值它是這樣的:
$my_var = NULL;
特殊常量NULL是按照慣例大寫,但實際上它是不區分大小寫的,也完全可以:
$my_var = null;
被指定為NULL的變量具有以下屬性:
-
在布爾上下文中它的計算結果為FALSE。
-
當使用isset()函數測試,則返回FALSE。
字符串:
它們是字符序列,如“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
單引號字符串被視為幾乎從字麵上是一樣的,而雙引號字符串會有替換變量的值,以及解釋某些字符序列。
<? $variable = "name"; $literally = 'My $variable will not print!\\n'; print($literally); $literally = "My $variable will print!\\n"; print($literally); ?>
這將產生以下結果:
My $variable will not print!\n My name will print
有關於字符串的長度冇有人為限製 - 可用在內存的範圍內,應該能夠使任意長的字符串。
這是用雙引號分隔(如“this”)字符串是由PHP的預處理均通過以下兩種方式:
-
用反斜杠(\)開頭的某些字符序列替換為特殊字符
-
變量名(從$)被替換為它們的值的字符串表示形式。
轉義序列替換為:
-
\n被替換為換行符
-
\r 被替換回車符
-
\t 被替換為製表符
-
\$ 被替換的美元符號本身 ($)
-
\" 被替換為單一的雙引號(")
-
\\ 被替換為單個反斜杠 (\)
here文檔:
可分配多個行使用此文檔中的單個字符串變量:
<?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! <br /> 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>
變量作用域:
範圍可以被定義為一個可變量在聲明它的程序的範圍。 PHP變量可以是以下四種範圍類型:
變量命名:
命名規則的變量是:
-
變量名必須以字母或下劃線字符。
-
變量名可以包含數字,字母,下劃線,但不能使用以下字符: + , - , % , ( , ) . & 等
變量冇有大小的限製,想用多長就多長。