php學習日誌(2)-php變數

來源:互聯網
上載者:User

標籤:

        變數是用於儲存資料的容器,與代數相似,可以給變數賦予某個確定的值(例如:$x=3)或者是賦予其它的變數(例如:$x=$y+$z)。變數的定義主要有以下規則:

  • 變數以$開始,後面跟著變數的名稱;
  • 變數名稱有數字、字母、底線構成,且第一個字元不能為數字;
  • 變數名稱不能包含空格;
  • 變數名稱區分大小寫。

    php中的變數在第一次賦予它值的時候被建立,如果變數未賦值,則在輸出時會出現錯誤,如下面所示:

<?php$x;echo $x;?>

此時瀏覽器會出現錯誤提示:

這個部分與Python有所區別,Python中如果變數沒有被賦值,編譯器會直接提示錯誤,我們需要注意一下。

圖、Python變數未賦值發生錯誤               

      php是一門弱類型語言,在定義變數時,我們不需要定義變數的類型,php會根據變數的值,自動的將變數轉換成正確的資料類型。如下例所示:

<?php$x=3;$y=3.0;$str="hello";$bool=false;$arr=array(1,2,3);$_null=NULL;echo gettype($x),"<br/>";     //輸出類型為integecho gettype($y),"<br/>";     //輸出類型為doubleecho gettype($str),"<br/>";   //輸出類型為stringecho gettype($bool),"<br/>";  //輸出類型為booleanecho gettype($arr),"<br/>";   //輸出類型為arrayecho gettype($_null),"<br/>";  //輸出類型為NULL?>

結果為:

      接下來我們將對php的四種變數範圍進行討論,變數範圍定義了變數的作用範圍,php主要有以下四種變數範圍:

  • local
  • global
  • static
  • parameter(參數)

(1)局部與全域範圍

      在函數外定義的變數,擁有全域範圍,除了函數外,全域範圍可以被指令碼中的任何部分訪問,要在一個函數中訪問全域變數,需要在函數中變數之前加上

global 關鍵字。

執行個體:

<?php/*局部範圍與全域範圍*/$a=5;function test(){    $b=10;    echo "測試函數內變數<br/>";    echo "變數a的值為:$a <br/>";  //變數$a未在函數內定義,在引用時出現錯誤.    echo "變數b的值為:$b<br/>";}test();echo "測試函數外變數<br/>";echo "變數a的值為:$a <br/>";echo "變數b的值為:$b<br/>";    //變數$a未在函數內定義,在引用時出現警告.?>

結果如下:

圖、局部變數與全域變數

可見,在局部函數裡面,是不能直接存取全域變數的,如果要訪問全域變數,須在函數裡面的變數前加上global關鍵字。同樣,在函數外也不能直接存取函數裡面的變數,函數執行結束記憶體會自動回收,故我們無法訪問到。

(2)global關鍵字

      global 關鍵字用於函數內訪問全域變數,在函數內調用函數外定義的全域變數,需要用global關鍵字。值得一提的是,這和參數的調用不同,參數的調用並不會改變該變數在記憶體中的值,而global調用是直接調用記憶體中的該值,直接對它進行操作,故會改變其值。

<?php/*在函數內調用函數外的變數,需要用到global關鍵字*//*重要:這種調用會改變變數在記憶體中的值*/$x=5;$y=6;/* * 以下這種方式是不被允許的,只有在函數內調用函數外的變數才能使用globalgolbal $z=7;*/function myTest(){    global $x,$y;    $y=$x+$y;}myTest();echo "y=$y"  //輸出y=11?>

 

*注意:超級全域變數 $GLOBALS[index]

      php將所有全域變數儲存在一個名為:$GLOBALS[index]的數組中,這個數組可以在函數內訪問,也可以用來直接更新全域變數(只能在函數內進行)。

執行個體:

<?php/* GLOBALS[index]的用法講解 */$x=5;$y=6;function myTest_1(){    $GLOBALS[‘y‘]=$GLOBALS[‘x‘]+$GLOBALS[‘y‘];    /*index不用寫$字元,否則報錯:$x,$y undefined    $GLOBALS[‘$y‘]=$GLOBALS[‘$x‘]+$GLOBALS[‘$y‘];    */}function myTest_2(){    $GLOBALS[‘x‘]=15;}echo "執行myTest_1:<br/>";myTest_1();echo "y=$y","<br/>";echo "x=$x","<br/>";$GLOBALS[‘$x‘]=12;     //未將GLOBALS[index]放在函數裡面,無效echo "x=$x","<br/>";echo "執行myTest_2:<br/>";myTest_2();echo "x=$x","<br/>";?>

結果為:

圖、GLOBALS[index]的用法樣本

(3)static關鍵字

      在一個函數執行完成之後,它的變數通常都會刪除,有時我們希望函數中的某個變數保留,這時我們可以在申明變數時使用static關鍵字:

執行個體:

<?php/*靜態變數static的用法*/function myTest(){    static $x=0,$y=1;    echo $x;    $x++;}myTest(); //輸出為:0myTest(); //輸出為:1myTest(); //輸出為:2/*函數裡面的靜態變數不能直接被訪問*/echo $y;  //輸出為:Notice: Undefined variable: y?>

(4)參數範圍

      參數(parameter)的作用是將值傳遞給函數的局部變數。

執行個體:

<?php/*參數(parameter)傳遞*/function myTest($x){    echo "傳遞的值為:$x.<br/>";}myTest(5);  //結果為:傳遞的值為5.myTest("string") //結果為:傳遞的值為string.?>

 

 

==php新手,有不對的地方希望各位博友提醒,萬分感謝==

Technorati 標籤: php,變數,local,global,static,參數傳遞,GLOBALS[index]

php學習日誌(2)-php變數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.