PHP基礎教程之PHP變數

來源:互聯網
上載者:User
變數是指在程式執行過程中數值可以變化的量。變數通過一個名字(變數名)來標識。系統為程式中的每一個變數分配一個儲存單元,變數名實質上就是電腦記憶體單元的名稱。因此,藉助變數名即可 訪問記憶體中的資料。

一、變數的聲明及使用


在PHP中使用變數之前不需要聲明變數,只需為變數賦值即可。PHP中的變數名稱用$和標識符表示,變數名是區分大小寫。

變數賦值,是指給變數一個具體的資料值,對於字串和數字類型的變數,可以通過“=”來實現賦值。格式為:

<?php $name = value; ?>

對變數賦值時,要遵循變數命名規則。如下面的變數名為合法的:

<?php$this = "yes";$_class = "roof";?>

而下面的變數命名則是非法的:

<?php $111_var = 111;    //變數名不能以數字字元開頭$@spcn = "spcn";     //變數名不能以字母和底線以外的其他字元開頭。?>

除了直接賦值外,還有兩種方式可以為變數聲明或賦值。

1. 變數間的賦值

定義:變數間的賦值指賦值後兩個變數使用各自的記憶體,互不干擾,執行個體如下:

<?php$string1 = "yes";           //聲明變數string1$string2 = $string1;        //使用$string1 初始化$string2$string1 = "no";            //改變變數$string1 的值echo $string2;             //輸出變數$string2 的值?>

輸出:yes 。

2. 引用賦值 

引用賦值的概念是從PHP4開始的,即用不同的名字訪問同一個變數內容。當改變其中一個變數的值時,另一個也跟著發生變化。使用“&”符號來表示引用。執行個體如下:

<?php$i = "spcn";         //聲明變數$i$j = &$i;            //使用引入賦值,這時$j已經賦值為spcn$i = "hello,$i";    //重新給$j賦值echo $j;             //輸出變數$jecho "<br>";echo $i;             //輸出變數$i?>

輸出結果為:

hello,spcnhello,spcn 

在本例中,變數$j是變數$i的引用,當給變數$i賦值後,$j的值也會隨之發生變化。


二、變數的範圍

變數在使用時,壓負荷變數的定義規則。變數必須在有效時間範圍內使用,如果變數超出有效範圍,則變數也就失去意義了。

變數的範圍如下:

局部變數: 在函數的背部定義的變數,其範圍是所在函數

全域變數: 被定義在所有函數以外的變數,其範圍是整個PHP檔案,但在使用者自訂函數內部是停用。如果希望在使用者自訂函數內部使用全域變數,則要使用 global 關鍵字聲明全域變數

靜態變數: 能夠在函數調用結束後仍保留變數值.當再次回到其範圍時.又可以繼續使用原來的值。而一般變數是在函數調用結束後.其儲存的資料值即被清除,所佔的記憶體空間也被釋放。使用靜態變數時.先要用關鍵字 static 來聲明變最.把關鍵字static放在要定義的變數之前

在函數內部定義的變數.其範圍為所在函數,如果在函數外賦值,將被認為是完全不同的另一個變數。在退出聲明變數的函數時。該變數及相應的值就會被清除。

<?php   $int_a=0; //初始全域變數$int_a將其賦值為0   echo "全域變數:".$int_a; //列印全域變數   function child_a(){ //局部變數的使用   $int_a=0; //這裡是局部變數,雖然與全域變數名相同但此變數僅在child_a內可見   echo "Fromchild_a:".$int_a;   }   function child_b(){ //調用全域變數   global $int_a; //聲明調用全域變數   echo "Fromchild_b:".$int_a;   }   ?>

  從上面的一個例子,我們可以很簡單明了的看明白PHP中全域與局部變數之間的差距...

  另我們高興的是PHP提供了其他的CGI語言的伺服器全域變數...這些變數當頁面調入的時候就已經由系統自動產生

  這些全域變數包含在

  $_SERVER($HTTP_SERVER_VARS)(伺服器提供的相關變數服務) PHP4.1.0

  $_ENV($HTTP_ENV_VARS) (儲存相關環境變數) PHP4.1.0

  $_POST (儲存使用Form post方法提交的變數) PHP4.1.0

  $_GET (儲存使用Form GET/URI方法提交的變數) PHP4.1.0

  $_COOKIE (儲存使用頁面獲得的COOKIE資料) PHP4.1.0

  $_SESSION (儲存網站內會話變數) PHP4.1.0

  $HTTP_POST_VARS (同$_POST, 評論是$_POST的效率比其更高) PHP4.1.0

  $HTTP_GET_VARS (同$_GET,評論同上.) PHP4.1.0

  $_REQUEST (包含了$_GET,$_POST,$_COOKIE,$_FILES) PHP4.1.0

  $_FILES (嚴格的說此變數已經包含在$_POST和$HTTP_POST_VARS,主要是獲得form post方式提交的file變數)PHP4.1.0

  $GLOBALS (儲存所有全域變數的數組) PHP3.0.0

  $php_errormsg (此全域變數必須在php.ini中將其開啟:track_error=on)

  以上變數為系統全域變數,您不需要聲明他們就可以直接使用,當然了,您的PHP版本一定要高於或等於他們後面所標註的版本號碼。

  在使用這些變數的時候,您無需用global關鍵字來聲明他們...   

<?php   function g_p(){   echo "Welcome".$_SERVER[REMOTE_ADDR].". nice meet you I am".$_SERVER[SERVER_ADDR];   // Welcome 192.168.0.3.nice meet you I am 192.168.0.1   } ?>


三、可變變數 

PHP還提供了變數的變數這個概念  

可變變最是一種獨特的變數,它允許動態改變一個變最名稱。其工作原理是該變數的名稱由另外一個變數的值來確定,實現過程就是在變數的前面再多加一個貨幣符號“$”。

下面使用可變變最動態改變變最的名稱。首先定義兩個變數$change_name和$trans.並且輸出變數$change_name的值,然後使用可變變數來改變變數$change_name的名稱,最後輸出改變名稱後的變數值,執行個體代碼如下:  

<?php   $change_name = "trans";       //聲明變數  $trans = "you can see";        echo $change_name;            //輸出變數$change_name  echo "<br>";  echo $$change_name;           //通過可變變數輸出$trans?>

輸出結果為:

transyou can see

 

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.