變量即值不斷變化的數據。php
常量即值恆定不變的數據。數組
#變量的類型轉換服務器
在PHP中,變量的類型是能夠任意轉換的,變量定義時不須要明確的類型定義,變量的類型是根據上下文來決定的,當 $sivir 被賦以字符串值, $sivir 就成了字符串類型的變量。當 $sivir 被賦以一個整型值,它就又成了一個整數型變量。session
###類型轉換有自動轉換和強制轉換:函數
####自動轉換性能
一個變量被賦以字符串值,它就是字符串型變量,當它被再次賦以整型值,它就是整型變量。操作系統
以合法數字開始的字符串會把那個數字做爲值先轉換,不然值爲0,含有. e E的轉換成浮點型,反之爲整型。code
代碼:索引
<?php $foo = "0"; var_dump($foo); $foo += 2; var_dump($foo); $foo = $foo + 1.3; var_dump($foo); $foo = 5 + "10 dollars"; var_dump($foo); ?>
效果:內存
string '0' (length=1) int 2 float 3.3 int 15
####強制轉換
語法:變量 = (目標類型) 變量;
把一個變量轉換類型後賦給另外一個變量。
代碼:
<?php $foo = 10; var_dump($foo); $bar = (boolean) $foo; var_dump($bar); ?>
效果:
int 10 boolean true
#變量的命名
PHP中的變量用一個美圓符號$後跟變量名來表示,變量名區分大小寫。
#可變變量
可變變量指一個變量的變量名能夠動態地設置和使用。
一個可變變量獲取了一個普通變量的值做爲這個可變變量的變量名,這個變量就叫作可變變量。
在PHP的函數和類的方法中,超全局變量不能夠用做可變變量。
代碼:
<?php $a = 'hello'; //定義變量`a`並賦值爲「hello」 $$a = 'world'; //定義變量`$$a`並賦值爲「world」 var_dump($$a); echo "$$a"; ?>
效果:
$hello
#預約義變量
指PHP預先定義好的變量,不須要賦值就能直接使用。
$_SEVER:服務器變量,包含頭信息(header)、路徑(path)和腳本位置等組成的數組。
$_ENV:環境變量,包含操做系統類型、軟件版本等信息組成的數組。
$_COOKIE:HTTP Cookies變量,經過HTTP Cookies傳遞的變量組成的數組。
$_GET:HTTP GET變量,經過HTTP GET方法傳遞的變量組成的數組。
$_POST:HTTP POST變量,經過HTTP POST方法傳遞的已上傳文件項目組成的數組。
$_FILES:HTTP文件上傳變量,經過HTTP POST方法傳遞的已上傳文件項目組成的數組。
$_REQUEST:Request變量,次關聯數組包含 $_GET、$_POST和$_COOKIE中的所有內容。
$_SESSION:Session變量,包含當前腳本中session變量的數組。
$_GLOBALS:全局變量,由全部已定義的全局變量組成的數組。
#外部變量
表單提交的數據
HTTP Cookies
在HTML表單中傳來的值被服務器自動轉換爲PHP預約義變量$_POST
的數組元素。要訪問這些元素,把表單中的字段名做爲$_POST數組的索引就能夠了,即$_POST['name']
。
#引用
引用相似於創建桌面快捷方式,在變量前面加上&
便可。
如:$c = &$a;
當變量a的值改變時,經過變量c引用的獲得的值夜改變。
另外一種相反的例子:
$b = $a;
相似於上面這種直接把一個變量的值賦給另外一個變量,$b就是$a的拷貝,當後來$a的值改變時,$b的值不會改變。
引用能夠節約內存資源。
#變量的銷燬
在PHP中,變量一般不須要自動銷燬,系統會自動釋放。但對於性能要求比較高的系統來講,自動釋放太慢,達不到高性能的要求,這樣就要求編寫代碼時要及時銷燬一些變量,一般是一些包含大量數據的變量。
銷燬變量有兩種方法:
從新賦值(賦NULL
值)
使用 unset()
函數
#常量
常量在程序運行期間不改變它的值,而且常量是全局的,定義了一個常量以後,不用管做用域就能夠在腳本的任何地方訪問常量。
使用 define()
函數定義。
格式:
<?php define("Constant","hello"); var_dump(Constant); ?>
效果:
string 'hello' (length=5)
一個常量一旦被定義,就不能再改變或取消定義。
常量與其餘PHP標籤符號遵循一樣的命名規則,常量沒有美圓符號。按慣例來講常量名所有使用大寫字母。
常量類型包括布爾型、整型、浮點型和字符串。
不能定義資源類型的常量。
####常量與變量的區別
常量前面沒有美圓符號$
常量的定義只能經過 define()函數
常量能夠忽略變量範圍的規則而在任何地方定義和訪問
常量一旦被定義就不能被從新定義或取消定義
常量的值只能是標量
#魔術常量
除了上面說的預約義變量以外,PHP中還有比預約義變量更多的預約義常量。而這類預約義常量不少都是由不一樣的擴展庫定義的,只有在加載了擴展庫以後纔會出現,或者在動態加載後,或者在編譯時已經包括進去了。
5個魔術常量
__LINE__
文件中的當前行號。__FILE__
文件的完整路徑和文件名。若是用在包含文件中,則返回包含文件名。自php4.0.2起,__FILE__老是包含一個絕對路徑,而在此以前的版本有時會包含一個相對路徑。__FUNCTION__
函數名稱,返回該函數被定義時的名字(php4.3.0新加)。自php5起本常量返回該函數被定義時的名字(區分大小寫)。在php4中該值老是小寫字母的。__CLASS__
類的名稱,返回該類被定義時的名字(php4.3.0新加)。自php5起本常量返回該類被定義時的名字(區分大小寫)。在php4中該值老是小寫字母的。__METHOD__
類的方法名,返回該方法被定義時的名字(php5.0.0新加)。返回該方法被定義時的名字(區分大小寫)。