1.4 PHP變量

1、PHP變量的命名規(guī)則

① 變量名必須以$開頭,后面跟變量名
② 變量名須以字母或下劃線開頭
③ 變量名不能以數(shù)字開頭,但可以包含字母、數(shù)字和下劃線
④ 變量名不能包含空格
⑤ 變量名區(qū)分大小寫

2、局部變量和全局變量

變量根據(jù)作用域劃分,可分為局部變量全局變量兩種。
① 局部變量:在函數(shù)內(nèi)定義的變量,函數(shù)內(nèi)的變量只能在函數(shù)內(nèi)使用。
② 全局變量:主要指作用于函數(shù)外得到變量,也叫外部變量,全局變量可以在函數(shù)體外的整個(gè)程序中使用,其作用域是整個(gè)源程序。如果想讓全局變量在函數(shù)體內(nèi)可以使用,那么可以通過(guò)在函數(shù)體內(nèi)使用global聲明變量為全局變量。

3、引用變量

使用地址符&可以定義引用變量

<?php
  $a = 10;
  $b = &$a;
  //$a 和 $b指向同一個(gè)內(nèi)存地址,對(duì)$b的修改也會(huì)作用于$a

函數(shù)參數(shù)的引用傳遞與值傳遞:
&放到函數(shù)定義的地方修飾形參,即函數(shù)參數(shù)的引用傳遞(pass by reference);引用傳遞傳送的是變量的地址,而不是它的值;使用引用傳遞參數(shù),函數(shù)內(nèi)任何改變都直接作用于函數(shù)外的原變量。

<?php
  $num = 10;
  //函數(shù)參數(shù)的引用傳遞
  function demo(&$num){
    //執(zhí)行代碼部分
  }
  demo($num);

unset()一個(gè)引用,只是斷開了變量名和變量?jī)?nèi)容之間的綁定,未銷毀變量?jī)?nèi)容
② 檢測(cè)一個(gè)變量是否被定義,使用isset()函數(shù)
③ 函數(shù)return返回參數(shù)形式為值傳遞

4、靜態(tài)變量

PHP靜態(tài)變量使用static關(guān)鍵字定義,分為局部靜態(tài)變量和全局靜態(tài)變量,還有在類中使用的靜態(tài)變量叫類的靜態(tài)成員。

靜態(tài)局部變量與局部變量:

局部變量會(huì)在函數(shù)執(zhí)行完畢后釋放,而靜態(tài)局部變量在函數(shù)執(zhí)行完畢后依然存在,下次再調(diào)用該函數(shù)時(shí),靜態(tài)局部變量的值為上次函數(shù)執(zhí)行后的值。

全局變量和靜態(tài)全局變量:

全局變量和靜態(tài)全局變量都是靜態(tài)存儲(chǔ)方式,作用域都是整個(gè)源程序。但區(qū)別在于當(dāng)一個(gè)源程序由多個(gè)源文件組成時(shí),全局變量在各個(gè)源程序里都是有效的,而靜態(tài)全局變量的作用域受到限制,只能在包含該變量的源文件內(nèi)可以使用。

5、超全局變量

超全局變量,又稱超全局?jǐn)?shù)組,超全局變量是在全部作用域中始終可用的內(nèi)置變量
$GLOBALS 一個(gè)包含了全部變量的全局組合數(shù)組。變量的名字就是數(shù)組的鍵。
$_SERVER 服務(wù)器和執(zhí)行環(huán)境信息
$_GET 通過(guò) URL 參數(shù)傳遞給當(dāng)前腳本的變量的數(shù)組
$_POST 當(dāng) HTTP POST 請(qǐng)求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 時(shí),會(huì)將變量以關(guān)聯(lián)數(shù)組形式傳入當(dāng)前腳本。
$_FILES 通過(guò) HTTP POST 方式上傳到當(dāng)前腳本的項(xiàng)目的數(shù)組
$_COOKIE 通過(guò) HTTP Cookies 方式傳遞給當(dāng)前腳本的變量的數(shù)組
$_SESSION 當(dāng)前腳本可用 SESSION 變量的數(shù)組
$_REQUEST 默認(rèn)情況下包含了$_GET$_GET$_COOKIE
$_ENV 通過(guò)環(huán)境方式傳遞給當(dāng)前腳本的變量的數(shù)組

6、可變變量

可變變量是一個(gè)變量的變量名可以動(dòng)態(tài)地設(shè)置和使用的變量。例如,$$a${$a}

<?php
  $a = 10;
  $b = 'a';
  //輸出結(jié)果10,$b被解析為字符'a',所以$$b解析為$a
  echo $$b;
  /*------------------分割線-----------------*/
  function foo(){
    //函數(shù)體
  }
  $func = 'foo';
  //可變函數(shù)調(diào)用
  $func();

7、COW機(jī)制(Copy On Write寫時(shí)復(fù)制)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容