簡而言之,變量是臨時存儲值的容器。(是程序中數據臨時存放的場所)。php腳本語言是一種弱類型檢查語言,和其他語言不同的是,變量、常量的數據類型是由程序的上下文決定。
一,變量的聲明
$a = 100; //聲明一個變量$a,賦上一個整型100;
$key1 = $a; //聲明一個變量$key1;將$a變量的值賦給它;
$a = $b = $c = $d = "value"; //同時聲明多個變量,並賦上相同的值;
php的變量聲明以後有一定的使用範圍,變量的範圍即它定義的上下文背景(也就是它的生效範圍)。如果在函數裏聲明的變量,則只能在函數裏用,外部聲明的變量,函數
內不也不能用。如果不是在函數裏面聲明的,則不僅能在<?php ?>
裏使用,也可以在一個頁面的所有開啓PHP模式下使用,也包含了include和require引入文件。
在變量的使用範圍內,
unset();// 釋放指定的變量。
isset();// 檢測變量是否被設置
empty();//檢查一個變量是否爲空。“”、0、“0”、NULL、FALSE、array()、var $var ,及沒有任何屬性的對象都被認爲是空的,如果參數爲空,則返回TRUE;
二,變量的命名
變量是嚴格區分大小寫的,一個有效的變量名由字母或下劃線開頭,,後面跟上任意數量的字母、數字或者下劃線。按照正常的正則表達式,可表述爲:
'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
但注意,變量名的標識符一定不以數字開頭,中間不能使用空格,不能使用點分開等。
$4site = 'no'; //非法變量名,以數字開頭
$_4site = 'yes'; //合法變量名,以下劃線開頭
$i站點site = 'yes'; //合法變量名,可以用中文
PHP中有一些標識符是系統定義的的,也稱爲關鍵字,它們時php語言的組成部分,因此不能使用它們的任何一個作爲常量、函數名或類名。但是系統關鍵字可以在php中作爲變量名使用,不過這樣容易混淆,所以最好不用php關鍵字作爲變量名稱。
如果變量是一個單詞構成,通常採用全部小寫方式作爲變量名。如果變量是由多個單詞構成的,則第一個單詞采用全部小寫,以後每個單詞首字母採用大寫。如$myNameIsWangChen
,函數命名也採用同樣規則。
三,可變變量
一個變量的變量名可以動態的設置和使用。
$hi = "hello";
$$hi = "world";
echo "$hi $hello"; //輸出兩個單詞 hello world
echo "$hi ${$hi}"; //輸出兩個單詞 hello world
在上面的例子中。”hi”使用了兩個$
以後,就可以作爲一個可變變量了。這時兩個變量都被定義了,$hello
的值是”world”。$$hi
和$hello
是等價的。
四,變量的引用賦值
引用賦值:新的變量簡單地引用了(指向)原始變量。改變新的變量,將影響到原始變量,反之亦然。
$foo = "Bob"; //原始變量
$bar = &$foo; //將變量$foo的引用賦值給變量$bar
$bar = "My name is Tom";//改變$bar的值
echo $bar; //變量$bar的值改變,輸出"My name is Tom"
echo $foo; //變量$foo的值改變,輸出"My name is Tom"
$foo = "My name is Tom";//改變$foo的值
echo $bar; //變量$bar的值改變,輸出"Your name is Bom"
echo $foo; //變量$foo的值改變,輸出"Your name is Bom"
前提是隻有兩個有名字的變量纔可以引用賦值。
$bar = &$foo;
不會導致$bar和$foo
在內存上同體,所以在執行unset()
後,變量 $bar和$foo
僅僅是相互取消關聯,$foo
並沒有因爲$bar
的釋放而消失。$bar
也不會因爲$foo
的釋放而消失。
$foo = 100;
$bar = &$foo;
unset($bar);
echo $foo;//值爲100
$foo = 100;
$bar = &$foo;
unset($foo);
echo $bar;//值爲100