PHP變數

什麼是變數

變數是指在程式執行過程中數值可以變化的量。變數透過一個名字(變數名)來標識。系統為程式中的每

一個變數分配一個儲存單元,變數名實質上就是電腦記憶體單元的命名。因此,借助變數名稱即可存取記憶體

中的資料。

變數是用來儲存資訊的"容器":

實例

<?php
 $x=5;
 $y=6;
 $z=$x+$y;
 echo $z;
 ?>

與代數類似

x=5
y=6
z=x+y

#在代數中,我們使用字母(如x),並給它賦值(如5 )。

從上面的表達式 z=x+y ,我們可以計算 z 的值為 11。

在 PHP 中,這些字母稱為變數。

變數是用來儲存資料的容器。

 

PHP 變數

與代數類似,可以給PHP 變數賦予某個值(x=5)或者表達式(z=x+y)。

變數可以是很短的名稱(如 x 和 y)或更具描述性的名稱(如 age、carname、totalvolume)。

PHP 變數規則:

·         變數以$ 符號開始,後面接著變數的名稱

·         變數名稱必須以字母或底線開始開始為下劃線字元開始符號


·         變數名稱只能包含字母數字字元以及底線(A-z、0-9 和_ )

·         變數名稱無法包含空格# 
#   $Y 是兩個不同的變因)

$var = 'hello';              //正確

     $var123 #  //錯誤

     $_var = 'hello';        //正確

     $@#var = 'hello';      語

#PH

o

# 她

'# PHP 變數都是區分大小寫的。

   

#建立(宣告)PHP 變數

PHP 沒有宣告變數的指令。

變數在您第一次賦值給它的時候被創建:

實例

<?php
 $txt="Hello world!";
 $x=5;
 $y=10.5;
 ?>

在上面的語句執行中,變數 txt 將保存值 Hello world!,且變數 x 將保存值 5。

註解:當您賦一個文字值給變數時,請在文字值兩側加上引號。

變數賦值:是指給變數一個具體的資料值,對於字串和數字類型的變量,可以透過「=」來實現賦值。

語法:<?php $name=value;?>######name是變數名,根據需求和喜好可以隨意取,但是最好用和功能或作用相關的詞。 ######value是要賦給變數的值。 ######範例:###
<?php
 $color="red";
$_name="jack";
?>


#PHP 是一門弱型別語言

在上面的實例中,我們注意到,不必向PHP 聲明該變數的資料類型。

PHP 會根據變數的值,自動把變數轉換為正確的資料型別。

在強型別的程式語言中,我們必須在使用變數前先宣告(定義)變數的型別和名稱。

PHP 變數作用域

變數的作用域是腳本中變數可被引用/使用的部分。

PHP 有四種不同的變因作用域:

·         local

·          

##局部和全域作用域


#在所有函數外部定義的變量,擁有全域作用域。除了函數外,全域變數可以被腳本中的任何部分訪問,要在一個函數中存取一個全域變量,需要使用 global 關鍵字。

在PHP 函數內部宣告的變數是局部變量,只能在函數內部存取:

#實例

<?php 
 $x=5; // 全局变量 
 
 function myTest() 
 { 
     $y=10; // 局部变量 
     echo "<p>测试函数内变量:<p>"; 
     echo "变量 x 为: $x"; 
     echo "<br>"; 
     echo "变量 y 为: $y"; 
 }  
 
 myTest(); 
 
 echo "<p>测试函数外变量:<p>"; 
 echo "变量 x 为: $x"; 
 echo "<br>"; 
 echo "变量 y 为: $y"; 
 ?>

##在上述實例中myTest() 函數定義了$x 和$y 變數。 $x 變數在函數外聲明,所以它是全域變數 , $y 變數在函數內宣告所以它是局部變數。

當我們呼叫myTest()函數並輸出兩個變數的值, 函數將會輸出局部變數$y 的值,但不能輸出$x 的值,因為$x 變數在函數外定義,無法在函數內使用,如果要在函數中存取一個全域變量,則需要使用global 關鍵字。


然後我們在myTest()函數外輸出兩個變數的值,函數會輸出全局部變數$x 的值,但不能輸出$y 的值,因為$y 變數在函數中定義,屬於局部變數。

你可以在不同函數中使用相同的變數名稱,因為這些函數內定義的變數名稱是局部變量,只作用於該函數內。

   

#PHP global 關鍵字

global 關鍵字用於函數內存取全域變量。

在函數內呼叫函數外定義的全域變量,我們需要在函數中的變數前加上global 關鍵字:實例

<?php
 $x=5;
 $y=10;
 
 function myTest()
 {
 global $x,$y;
 $y=$x+$y;
 }
 
 myTest();
 echo $y; // 输出 15
 ?>

PHP 將所有全域變量儲存在一個名為$GLOBALS[index] 的陣列中。 index 保存變數的名稱。這個數組可以在函數內部訪問,也可以直接用來更新全域變數。

上面的實例可以寫成這樣:

實例

<?php
 $x=5;
 $y=10;
 
 function myTest()
 {
 $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
 } 
 
 myTest();
 echo $y;
 ?>

Static 作用域
當函數完成時,它的所有變數通常都會被刪除。然而,有時候您希望某個局部變數不要被刪除。

要做到這一點,請在您第一次宣告變數時使用 static 關鍵字:實例

<?php
 
 function myTest()
 {
 static $x=0;
 echo $x;
 $x++;
 }
 
 myTest();
 myTest();
 myTest();
 
 ?>

然後,每次呼叫函數時,該變數將會保留函數前一次被呼叫時的值。

註解:此變數仍然是函數的局部變數。

可變變數

可變變數是一種獨特的變量,它允許動態改變一個變數名稱。其工作原理是該變數的名稱有另外一個變數的值來決定,實現過程就是在變數的前面再多加一個"$"。

 

參數作用域

參數是透過呼叫程式碼將值傳遞給函數的局部變數。

參數是在參數清單中宣告的,作為函數宣告的一部份:

實例

<?php
 
 function myTest($x)
 {
 echo $x;
 }
 
 myTest(5);
 
 ?>

我們將在 PHP 函數 章節對它做更詳細的討論。


系統變數

PHP系統內建的變量,大多使用底線開頭,具體使用,我們後面的課程會介紹

•       $GLOBALS 儲存目前腳本中的所有全域變量,其KEY為變數名,VALUE為變數值

•       $_SERVER儲存以GET方法提交表單中的資料

•       $_POST 儲存以POST方法提交表單中的資料

•       $_COOKIE 取得或設定使用者瀏覽器Cookies中儲存的變數陣列

•       $_FILES 儲存上傳檔案提交至目前腳本的資料

•       $_ENV 儲存目前Web環境變數

•     $_GET、$_POST、$_COOKIE和$_SESSION中的所有內容

$_SESSION 儲存目前腳本的會話變數陣列

繼續學習
||
<?php function myTest($x) { echo $x; } myTest(5); ?>