PHP變數

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

大家在讀初中的時候呀。老師常會這麼教大家。

請問,李磊和韓梅梅同學,假如:

##x = 5

y = 6

那麼x + y 等於多少呢?大家會義無反顧的回答。 x + y 等於11。

接下來我們看下面的國中的數學知識,請問x + y 的結果是多少?

x = 5

y = 6

#x = 8

我估計大家也會義無反顧的回答:x + y 的結果為14。

這就是變數!


變數的幾個特點:

1. x = 5 將右邊值5,賦值給左邊的x

2.   第二段x = 8,最後x + y 的結果等於14,說明x在從上到下的運算(執行)中,可以被重新賦值。


PHP 變數

我們在PHP中的變數也是如此。不過有幾個

特點

1.    必須以

$開始。如變數x必須寫成$x

2.    變數的首字母不能以數字開始

3.    變數的名字區分大小寫

4.    變數不要以特殊符號、中文,_不算特殊符號

5.    變數命名有意義(別寫xxx,aaa,ccc這種變數名)

6.    $ 叫作美元符,英文單字:dollar。 PHP的變數必須以美元符開始。說明搞PHP有「錢」圖


#建立(宣告)PHP 變數

PHP 沒有宣告變數的指令。

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

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

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

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


PHP 是一門弱型別語言

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

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

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


PHP 變數作用域

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

PHP 有四個不同的變數作用域:

·   local         

#·  global#global

#global

#global

#·  

static         

·  

parameter


## ##局部和全域作用域局部和全域作用域(loacal  global)


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

實例

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

<?php
 header("Content-type:text/html;charset=utf-8");
 $x=5; // 全局变量
 
 function myTest()
 {
     $y=10; // 局部变量
     echo "<p>测试函数内变量:<p>";
     echo "变量 x 为: $x"; //输出错误 Notice: Undefined variable:
     echo "<br>";
     echo "变量 y 为: $y";
 }
 
 myTest();
 
 echo "<p>测试函数外变量:<p>";
 echo "变量 x 为: $x";
 echo "<br>";
 echo "变量 y 为: $y";  //输出错误 Notice: Undefined variable:

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


局部變數。

#######

當我們呼叫myTest()函數並輸出兩個變數的值, 函數將會輸出局部變數$y 的值,但不能輸出$x 的值,因為$x 變數在函數外定

義,無法在函數內使用,如果要在一個函數中存取一個全域變量,則需要使用global 關鍵字。

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

定義,屬於局部變數。

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



PHP global 關鍵字

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

實例

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

<?php
 $x=10;
 $y=20;
 function test(){
     global $x,$y;      //使用global关键字
 
     $y=$x+$y;
 }
 test();
 echo $y;//输出30

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();
 myTest();
 
 ?>

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

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


參數作用域

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

參數是在參數清單中聲明的,作為函數聲明的一部分:

實例

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

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



#
繼續學習
||
<?php header("Content-type:text/html;charset=utf-8"); $x=5; // 全局变量 function myTest() { $y=10; // 局部变量 echo "<p>测试函数内变量:<p>"; echo "变量 x 为: $x"; //输出错误 Notice: Undefined variable: echo "<br>"; echo "变量 y 为: $y"; } myTest(); echo "<p>测试函数外变量:<p>"; echo "变量 x 为: $x"; echo "<br>"; echo "变量 y 为: $y"; //输出错误 Notice: Undefined variable: ?>