php學(xué)習(xí)日志(2)-php變量
Aug 18, 2016 am 08:57 AM??????? 變量是用于存儲(chǔ)數(shù)據(jù)的容器,與代數(shù)相似,可以給變量賦予某個(gè)確定的值(例如:$x=3)或者是賦予其它的變量(例如:$x=$y+$z)。變量的定義主要有以下規(guī)則:
- 變量以$開始,后面跟著變量的名稱;
- 變量名稱有數(shù)字、字母、下劃線構(gòu)成,且第一個(gè)字符不能為數(shù)字;
- 變量名稱不能包含空格;
- 變量名稱區(qū)分大小寫。
??? php中的變量在第一次賦予它值的時(shí)候被創(chuàng)建,如果變量未賦值,則在輸出時(shí)會(huì)出現(xiàn)錯(cuò)誤,如下面所示:
<span style="color: #000000">php </span><span style="color: #800080">$x</span><span style="color: #000000">; </span><span style="color: #0000ff">echo</span> <span style="color: #800080">$x</span><span style="color: #000000">; </span>?>
此時(shí)瀏覽器會(huì)出現(xiàn)錯(cuò)誤提示:
這個(gè)部分與Python有所區(qū)別,Python中如果變量沒有被賦值,編譯器會(huì)直接提示錯(cuò)誤,我們需要注意一下。
圖、Python變量未賦值發(fā)生錯(cuò)誤???????????????
????? php是一門弱類型語(yǔ)言,在定義變量時(shí),我們不需要定義變量的類型,php會(huì)根據(jù)變量的值,自動(dòng)的將變量轉(zhuǎn)換成正確的數(shù)據(jù)類型。如下例所示:
<span style="color: #000000">php </span><span style="color: #800080">$x</span>=3<span style="color: #000000">; </span><span style="color: #800080">$y</span>=3.0<span style="color: #000000">; </span><span style="color: #800080">$str</span>="hello"<span style="color: #000000">; </span><span style="color: #800080">$bool</span>=<span style="color: #0000ff">false</span><span style="color: #000000">; </span><span style="color: #800080">$arr</span>=<span style="color: #0000ff">array</span>(1,2,3<span style="color: #000000">); </span><span style="color: #800080">$_null</span>=<span style="color: #0000ff">NULL</span><span style="color: #000000">; </span><span style="color: #0000ff">echo</span> <span style="color: #008080">gettype</span>(<span style="color: #800080">$x</span>),"<br>"; <span style="color: #008000">//</span><span style="color: #008000">輸出類型為integ</span> <span style="color: #0000ff">echo</span> <span style="color: #008080">gettype</span>(<span style="color: #800080">$y</span>),"<br>"; <span style="color: #008000">//</span><span style="color: #008000">輸出類型為double</span> <span style="color: #0000ff">echo</span> <span style="color: #008080">gettype</span>(<span style="color: #800080">$str</span>),"<br>"; <span style="color: #008000">//</span><span style="color: #008000">輸出類型為string</span> <span style="color: #0000ff">echo</span> <span style="color: #008080">gettype</span>(<span style="color: #800080">$bool</span>),"<br>"; <span style="color: #008000">//</span><span style="color: #008000">輸出類型為boolean</span> <span style="color: #0000ff">echo</span> <span style="color: #008080">gettype</span>(<span style="color: #800080">$arr</span>),"<br>"; <span style="color: #008000">//</span><span style="color: #008000">輸出類型為array</span> <span style="color: #0000ff">echo</span> <span style="color: #008080">gettype</span>(<span style="color: #800080">$_null</span>),"<br>"; <span style="color: #008000">//</span><span style="color: #008000">輸出類型為NULL</span> ?>
結(jié)果為:
????? 接下來我們將對(duì)php的四種變量作用域進(jìn)行討論,變量作用域定義了變量的作用范圍,php主要有以下四種變量作用域:
- local
- global
- static
- parameter(參數(shù))
(1)局部與全局作用域
????? 在函數(shù)外定義的變量,擁有全局作用域,除了函數(shù)外,全局作用域可以被腳本中的任何部分訪問,要在一個(gè)函數(shù)中訪問全局變量,需要在函數(shù)中變量之前加上
global 關(guān)鍵字。
實(shí)例:
<span style="color: #000000">php </span><span style="color: #008000">/*</span><span style="color: #008000">局部作用域與全局作用域</span><span style="color: #008000">*/</span> <span style="color: #800080">$a</span>=5<span style="color: #000000">; </span><span style="color: #0000ff">function</span><span style="color: #000000"> test() { </span><span style="color: #800080">$b</span>=10<span style="color: #000000">; </span><span style="color: #0000ff">echo</span> "測(cè)試函數(shù)內(nèi)變量<br>"<span style="color: #000000">; </span><span style="color: #0000ff">echo</span> "變量a的值為:<span style="color: #800080">$a</span> <br>"; <span style="color: #008000">//</span><span style="color: #008000">變量$a未在函數(shù)內(nèi)定義,在引用時(shí)出現(xiàn)錯(cuò)誤.</span> <span style="color: #0000ff">echo</span> "變量b的值為:<span style="color: #800080">$b</span><br>"<span style="color: #000000">; } test(); </span><span style="color: #0000ff">echo</span> "測(cè)試函數(shù)外變量<br>"<span style="color: #000000">; </span><span style="color: #0000ff">echo</span> "變量a的值為:<span style="color: #800080">$a</span> <br>"<span style="color: #000000">; </span><span style="color: #0000ff">echo</span> "變量b的值為:<span style="color: #800080">$b</span><br>"; <span style="color: #008000">//</span><span style="color: #008000">變量$a未在函數(shù)內(nèi)定義,在引用時(shí)出現(xiàn)警告.</span> ?>
結(jié)果如下:
圖、局部變量與全局變量
可見,在局部函數(shù)里面,是不能直接訪問全局變量的,如果要訪問全局變量,須在函數(shù)里面的變量前加上global關(guān)鍵字。同樣,在函數(shù)外也不能直接訪問函數(shù)里面的變量,函數(shù)執(zhí)行結(jié)束內(nèi)存會(huì)自動(dòng)回收,故我們無法訪問到。
(2)global關(guān)鍵字
????? global 關(guān)鍵字用于函數(shù)內(nèi)訪問全局變量,在函數(shù)內(nèi)調(diào)用函數(shù)外定義的全局變量,需要用global關(guān)鍵字。值得一提的是,這和參數(shù)的調(diào)用不同,參數(shù)的調(diào)用并不會(huì)改變?cè)撟兞吭趦?nèi)存中的值,而global調(diào)用是直接調(diào)用內(nèi)存中的該值,直接對(duì)它進(jìn)行操作,故會(huì)改變其值。
<span style="color: #000000">php </span><span style="color: #008000">/*</span><span style="color: #008000">在函數(shù)內(nèi)調(diào)用函數(shù)外的變量,需要用到global關(guān)鍵字</span><span style="color: #008000">*/</span> <span style="color: #008000">/*重要:</span><span style="color: #008000">這種調(diào)用會(huì)改變變量在內(nèi)存中的值</span><span style="color: #008000">*/</span> <span style="color: #800080">$x</span>=5<span style="color: #000000">; </span><span style="color: #800080">$y</span>=6<span style="color: #000000">; </span><span style="color: #008000">/*</span><span style="color: #008000"> * 以下這種方式是不被允許的,只有在函數(shù)內(nèi)調(diào)用函數(shù)外的變量才能使用global golbal $z=7; </span><span style="color: #008000">*/</span> <span style="color: #0000ff">function</span><span style="color: #000000"> myTest() { </span><span style="color: #0000ff">global</span> <span style="color: #800080">$x</span>,<span style="color: #800080">$y</span><span style="color: #000000">; </span><span style="color: #800080">$y</span>=<span style="color: #800080">$x</span>+<span style="color: #800080">$y</span><span style="color: #000000">; } myTest(); </span><span style="color: #0000ff">echo</span> "y=<span style="color: #800080">$y</span>" <span style="color: #008000">//</span><span style="color: #008000">輸出y=11</span> ?>
?
*注意:超級(jí)全局變量 $GLOBALS[index]
????? php將所有全局變量存儲(chǔ)在一個(gè)名為:$GLOBALS[index]的數(shù)組中,這個(gè)數(shù)組可以在函數(shù)內(nèi)訪問,也可以用來直接更新全局變量(只能在函數(shù)內(nèi)進(jìn)行)。
實(shí)例:
<span style="color: #000000">php </span><span style="color: #008000">/*</span><span style="color: #008000"> GLOBALS[index]的用法講解 </span><span style="color: #008000">*/</span> <span style="color: #800080">$x</span>=5<span style="color: #000000">; </span><span style="color: #800080">$y</span>=6<span style="color: #000000">; </span><span style="color: #0000ff">function</span><span style="color: #000000"> myTest_1() { </span><span style="color: #800080">$GLOBALS</span>['y']=<span style="color: #800080">$GLOBALS</span>['x']+<span style="color: #800080">$GLOBALS</span>['y'<span style="color: #000000">]; </span><span style="color: #008000">/*</span><span style="color: #008000">index不用寫$字符,否則報(bào)錯(cuò):$x,$y undefined $GLOBALS['$y']=$GLOBALS['$x']+$GLOBALS['$y']; </span><span style="color: #008000">*/</span><span style="color: #000000"> } </span><span style="color: #0000ff">function</span><span style="color: #000000"> myTest_2() { </span><span style="color: #800080">$GLOBALS</span>['x']=15<span style="color: #000000">; } </span><span style="color: #0000ff">echo</span> "執(zhí)行myTest_1:<br>"<span style="color: #000000">; myTest_1(); </span><span style="color: #0000ff">echo</span> "y=<span style="color: #800080">$y</span>","<br>"<span style="color: #000000">; </span><span style="color: #0000ff">echo</span> "x=<span style="color: #800080">$x</span>","<br>"<span style="color: #000000">; </span><span style="color: #800080">$GLOBALS</span>['$x']=12; <span style="color: #008000">//</span><span style="color: #008000">未將GLOBALS[index]放在函數(shù)里面,無效</span> <span style="color: #0000ff">echo</span> "x=<span style="color: #800080">$x</span>","<br>"<span style="color: #000000">; </span><span style="color: #0000ff">echo</span> "執(zhí)行myTest_2:<br>"<span style="color: #000000">; myTest_2(); </span><span style="color: #0000ff">echo</span> "x=<span style="color: #800080">$x</span>","<br>"<span style="color: #000000">; </span>?>
結(jié)果為:
圖、GLOBALS[index]的用法示例
(3)static關(guān)鍵字
????? 在一個(gè)函數(shù)執(zhí)行完成之后,它的變量通常都會(huì)刪除,有時(shí)我們希望函數(shù)中的某個(gè)變量保留,這時(shí)我們可以在申明變量時(shí)使用static關(guān)鍵字:
實(shí)例:
<span style="color: #000000">php </span><span style="color: #008000">/*</span><span style="color: #008000">靜態(tài)變量static的用法</span><span style="color: #008000">*/</span> <span style="color: #0000ff">function</span><span style="color: #000000"> myTest() { </span><span style="color: #0000ff">static</span> <span style="color: #800080">$x</span>=0,<span style="color: #800080">$y</span>=1<span style="color: #000000">; </span><span style="color: #0000ff">echo</span> <span style="color: #800080">$x</span><span style="color: #000000">; </span><span style="color: #800080">$x</span>++<span style="color: #000000">; } myTest(); </span><span style="color: #008000">//</span><span style="color: #008000">輸出為:0</span> myTest(); <span style="color: #008000">//</span><span style="color: #008000">輸出為:1</span> myTest(); <span style="color: #008000">//</span><span style="color: #008000">輸出為:2</span> <span style="color: #008000">/*</span><span style="color: #008000">函數(shù)里面的靜態(tài)變量不能直接被訪問</span><span style="color: #008000">*/</span> <span style="color: #0000ff">echo</span> <span style="color: #800080">$y</span>; <span style="color: #008000">//</span><span style="color: #008000">輸出為:Notice: Undefined variable: y</span> ?>
(4)參數(shù)作用域
????? 參數(shù)(parameter)的作用是將值傳遞給函數(shù)的局部變量。
實(shí)例:
<span style="color: #000000">php </span><span style="color: #008000">/*</span><span style="color: #008000">參數(shù)(parameter)傳遞</span><span style="color: #008000">*/</span> <span style="color: #0000ff">function</span> myTest(<span style="color: #800080">$x</span><span style="color: #000000">) { </span><span style="color: #0000ff">echo</span> "傳遞的值為:<span style="color: #800080">$x</span>.<br>"<span style="color: #000000">; } myTest(</span>5); <span style="color: #008000">//</span><span style="color: #008000">結(jié)果為:傳遞的值為5.</span> myTest("string") <span style="color: #008000">//</span><span style="color: #008000">結(jié)果為:傳遞的值為string.</span> ?>
?
?
==php新手,有不對(duì)的地方希望各位博友提醒,萬(wàn)分感謝==

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)
