php变量教学,PHP变量详解
什么是變量
變量指的就是在程序執(zhí)行過程中數(shù)值可以變化的量,它與我們所講的常量是相反的,我們常量是只要被定義了,在程序中就不能被改變。而變量是可以變的。
變量作用
變量就是用來保存我們值,相當(dāng)于一個存儲數(shù)據(jù)的容器。
x = 5;
y = 6;
z = x + y;
從上面的表達(dá)式 z = x + y;我們能夠計(jì)算出 z 的值是 11
在 PHP 中,這三個字母就被稱為變量。
變量賦值
變量賦值,是指給一個變量具體的數(shù)據(jù)值,對于字符串和數(shù)字類型的變量,可以通過“=”來實(shí)現(xiàn)賦值,像上面一樣例子一樣,x和y是變量,那么5和6就是變量的值了。
聲明變量
通過美元符號 $變量名稱 來表示變量
$x = 5;
$y = 6;
$z = $x + $y
上面的實(shí)例就完成了我們對變量的定義與賦值了。
PHP 變量規(guī)則
變量以 $ 符號開始,后面跟著變量的名稱
變量名必須以字母或者下劃線字符開始
變量名只能包含字母數(shù)字字符以及下劃線
變量名不能包含空格
$A駝峰標(biāo)記法(firstName)或者下劃線法命名(first_name)
變量名稱嚴(yán)格區(qū)分大小寫,$y和$Y是兩個變量,如果變量名稱重復(fù),后面的值會覆蓋前面的值
變量可以不聲明,直接使用
除了上面的變量直接賦值外,還有兩種方式可以聲明變量和賦值,一種是變量間的賦值,什么意思呢?看下面的實(shí)例
$str1 = 'hello';
$str2 = $str1;
$str1 = 'world';
echo $str2;
輸出 “hello”
我們并沒有給變量$str2直接賦值,而是將變量$str1賦值給$str2,這就是我們變量間的賦值。
另一種是引用賦值。從PHP4開始,PHP引入了“引用賦值”的概念,就是用不同的名字訪問同一個變量內(nèi)容。當(dāng)改變其中任何一個變量的值,另一個也會發(fā)生變化。引用賦值使用“&”來表示引用。
引用和賦值的區(qū)別在于,賦值是將原變量內(nèi)容復(fù)制下來,再用一個新的內(nèi)存空間來保存,而引用則是給變量的內(nèi)容在起一個名字,相當(dāng)于一個別名。就好像一些文學(xué)愛好者經(jīng)常會向報(bào)紙,雜志投稿件,但一般都不會真名,而是用筆名,這個筆名就可以看作是一個引用。
//php引用變量:不同變量名指向同一地址
//定義一個變量a,此時(shí)內(nèi)存開辟了一塊區(qū)域,$a指向該區(qū)域
$a = 100;
var_dump($a); //int 100
//定義變量b,將a變量的值賦值給b,此時(shí)該區(qū)域有兩個變量($a和$b)指向。
$b = $a;
var_dump($b); //int 100
//修改$a變量的值,php變量具有Copy On Write的特性,所以會復(fù)制并重寫a所指向的區(qū)域值,此時(shí)a和b分別指向不同區(qū)域。
$a = 10;
var_dump($a); //int 10
var_dump($b); //int 100
$c = 100;
$d = &$c;
$c = 10;
var_dump($c); //int 10
var_dump($d); //int 10
//當(dāng)引用指向時(shí),php變量不在具有Copy On Write特性,且指向同一內(nèi)存區(qū)域,無論$c或$d誰變化,另外一個都會變化
可變變量(使用兩個美元符號($))
$a = "hello";
$$a = "world";
兩個變量都被定義了:$a 的內(nèi)容是“hello”,并且 $hello 的內(nèi)容是“world”。因此,可以表述為:
echo “$a ${$a}”;或者 echo “$a $hello”;它們都會輸出:hello world
變量作用域
變量在使用時(shí)要符合變量的定義規(guī)則。變量必須在有效的范圍使用,如果變量超出了有限范圍,變量也就沒有意義了,就好像我們有一沓人民幣,我們可以在中國購買商品,但如果來到國外,那么這一沓人民幣也就不能用了。這一沓人民幣就相當(dāng)于這個變量,而中國以內(nèi)的范圍就相當(dāng)于作用域。
PHP的變量由于作用域不同分為:局部變量,全局變量和靜態(tài)變量,如下表:
局部變量
在函數(shù)的內(nèi)部定義的變量,作用域就是所在的函數(shù)范圍
全局變量
在被定義所有的函數(shù)以外的變量,作用域是整個PHP文件,但是在用戶自定義函數(shù)內(nèi)部是不能使用的。如果希望用戶在用戶自定義函數(shù)內(nèi)部使用全局變量,則使用global關(guān)鍵字聲明全局變量
靜態(tài)變量
能夠在函數(shù)調(diào)用結(jié)束后仍保留變量值,當(dāng)再次回到其作用域,又可以繼續(xù)使用原來的值。而一般變量是在函數(shù)調(diào)用后,其存儲的數(shù)據(jù)值會被清除,所占用的內(nèi)存空間也會被釋放。使用靜態(tài)變量時(shí),先要用關(guān)鍵字static來聲明變量,把關(guān)鍵字static放在要定義的變量之前
TIPS
在函數(shù)內(nèi)部定義的變量,其作用域?yàn)樗诘暮瘮?shù),如果在函數(shù)外賦值,將被認(rèn)為是完全不同的另一個變量。在退出聲明變量的函數(shù)時(shí),該變量及相應(yīng)的值就會被清除。
本實(shí)例用于比較在函數(shù)內(nèi)賦值的變量(局部變量)和在函數(shù)外賦值的變量(全局變量),實(shí)例代碼如下:
$exam= "在函數(shù)外定義"; //聲明全局變量
function add(){
$exam="在函數(shù)內(nèi)定義"; //聲明局部變量
echo "在函數(shù)內(nèi)輸出的內(nèi)容是:".$exam."
"; //輸出局部變量
}
add(); //調(diào)用函數(shù)
echo "在函數(shù)外輸出的內(nèi)容是:".$exam; //輸出全局變量
?>
運(yùn)行結(jié)果:
在函數(shù)內(nèi)輸出的內(nèi)容是:在函數(shù)內(nèi)定義
在函數(shù)外輸出的內(nèi)容是:在函數(shù)外定義
靜態(tài)變量在很多地方都能用到,靜態(tài)變量類型說明符是static。
static全局變量只初始化一次,防止在其他文件單元中被引用
static局部變量只被初始化一次,下一次依據(jù)上一次結(jié)果值
static函數(shù)在內(nèi)存中只有一份,普通函數(shù)在每個被調(diào)用中維持一份拷貝
下面的實(shí)例使用靜態(tài)變量和普通變量同事輸出一個數(shù)據(jù),查看一下兩者的功能有什么不同,代碼如下:
function zdy0(){
static $message = 0; //初始化靜態(tài)變量
$message+=1;
echo $message." ";
}
function zdy1(){
$message = 0; //初始化靜態(tài)變量
$message+=1;
echo $message." ";
}
for ($i=0;$i<10;$i++){
zdy0(); //輸出1~10
}
echo "
";
for ($i=0;$i<10;$i++){
zdy1(); //輸出10個1
}
總結(jié)
以上是生活随笔為你收集整理的php变量教学,PHP变量详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高中学生计算机软件,中学生计算器
- 下一篇: android游戏编程之从零开始_纯C语