??????? 變數是用來儲存資料的容器,而與代數相似,可以給予變數某一個確定的值(例如:$x=3)或是賦予其它的變數(例如:$x=$y+$z)。變數的定義主要有以下規(guī)則:
- 變數以$開始,後面跟著變數的名稱;
- 變數名稱有數字、字母、底線構成,且第一個字元不能為數字;
- 變數名稱不能包含空格;
- 變數名稱區(qū)分大小寫。
??? php中的變數在第一次賦予它值的時候被創(chuàng)建,如果變數未賦值,則在輸出時會出現錯誤,如下面所示:
<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>?>
此時瀏覽器會出現錯誤提示:
這個部分與Python有所區(qū)別,Python中如果變數沒有被賦值,編譯器會直接提示錯誤,我們需要注意一下。
圖、Python變數未賦值發(fā)生錯誤???????????????
????? php是一種弱型別語言,定義變數時,我們不需要定義變數的類型,php會根據變數的值,自動的將變數轉換成正確的資料型別。如下例所示:
<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>(php學習日誌(2)-php變數,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> ?>
結果為:
????? 接下來我們將對php的四種變數作用域進行討論,而變數作用域定義了變數的作用範圍,php主要有以下四種變數作用域:
- local
- global
- static
- parameter(參數)
(php學習日誌(2)-php變數)局部與全局作用域
????? 在函數外定義的變量,擁有全域作用域,除了函數外,全域作用域可以被腳本中的任何部分訪問,要在一個函數中訪問全域變量,需要在函數中變量之前加上
global 關鍵字。
實例:
<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>=php學習日誌(2)-php變數0<span style="color: #000000">; </span><span style="color: #0000ff">echo</span> "測試函數內變量<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未在函數內定義,在引用時出現錯誤.</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> "測試函數外變量<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未在函數內定義,在引用時出現警告.</span> ?>
結果如下:
圖、局部變量與全局變量
可見,在局部函數里面,是不能直接訪問全局變量的,如果要訪問全局變量,須在函數里面的變量前加上global關鍵字。同樣,在函數外也不能直接訪問函數里面的變量,函數執(zhí)行結束內存會自動回收,故我們無法訪問到。
(2)global關鍵字
????? global 關鍵字用于函數內訪問全局變量,在函數內調用函數外定義的全局變量,需要用global關鍵字。值得一提的是,這和參數的調用不同,參數的調用并不會改變該變量在內存中的值,而global調用是直接調用內存中的該值,直接對它進行操作,故會改變其值。
<span style="color: #000000">php </span><span style="color: #008000">/*</span><span style="color: #008000">在函數內調用函數外的變量,需要用到global關鍵字</span><span style="color: #008000">*/</span> <span style="color: #008000">/*重要:</span><span style="color: #008000">這種調用會改變變量在內存中的值</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"> * 以下這種方式是不被允許的,只有在函數內調用函數外的變量才能使用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=php學習日誌(2)-php變數php學習日誌(2)-php變數</span> ?>
?
*注意:超級全局變量 $GLOBALS[index]
????? php將所有全局變量存儲在一個名為:$GLOBALS[index]的數組中,這個數組可以在函數內訪問,也可以用來直接更新全局變量(只能在函數內進行)。
實例:
<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_php學習日誌(2)-php變數() { </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不用寫$字符,否則報錯:$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']=php學習日誌(2)-php變數5<span style="color: #000000">; } </span><span style="color: #0000ff">echo</span> "執(zhí)行myTest_php學習日誌(2)-php變數:<br>"<span style="color: #000000">; myTest_php學習日誌(2)-php變數(); </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']=php學習日誌(2)-php變數2; <span style="color: #008000">//</span><span style="color: #008000">未將GLOBALS[index]放在函數里面,無效</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>?>
結果為:
圖、GLOBALS[index]的用法示例
(3)static關鍵字
????? 在一個函數執(zhí)行完成之后,它的變量通常都會刪除,有時我們希望函數中的某個變量保留,這時我們可以在申明變量時使用static關鍵字:
實例:
<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>=php學習日誌(2)-php變數<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">輸出為:php學習日誌(2)-php變數</span> myTest(); <span style="color: #008000">//</span><span style="color: #008000">輸出為:2</span> <span style="color: #008000">/*</span><span style="color: #008000">函數里面的靜態(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)參數作用域
????? 參數(parameter)的作用是將值傳遞給函數的局部變量。
實例:
<span style="color: #000000">php </span><span style="color: #008000">/*</span><span style="color: #008000">參數(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">結果為:傳遞的值為5.</span> myTest("string") <span style="color: #008000">//</span><span style="color: #008000">結果為:傳遞的值為string.</span> ?>
?
?
==php新手,有不對的地方希望各位博友提醒,萬分感謝==

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)