php 變量定義方法
更新時(shí)間:2009年06月14日 14:20:40 作者:
對(duì)于php下一些常見的靜態(tài) 常量等的定義說明。
1.定義常量define("CONSTANT", "Hello world.");
常量只能包含標(biāo)量數(shù)據(jù)(boolean,integer,float 和 string)。
調(diào)用常量時(shí),只需要簡(jiǎn)單的用名稱取得常量的值,而不能加“$”符號(hào),如:echo CONSTANT;
注: 常量和(全局)變量在不同的名字空間中。這意味著例如 TRUE 和 $TRUE 是不同的。
2.普通變量$a = "hello";
3.可變變量(使用兩個(gè)美元符號(hào)($))
$$a = "world";
兩個(gè)變量都被定義了:
$a 的內(nèi)容是“hello”并且 $hello 的內(nèi)容是“world”。
因此,可以表述為:
echo "$a ${$a}";或者 echo "$a $hello";它們都會(huì)輸出:hello world
要將可變變量用于數(shù)組,必須解決一個(gè)模棱兩可的問題。這就是當(dāng)寫下 $$a[1] 時(shí),解析器需要知道是想要 $a[1] 作為一個(gè)變量呢,還是想要 $$a 作為一個(gè)變量并取出該變量中索引為 [1] 的值。解決此問題的語法是,對(duì)第一種情況用 ${$a[1]},對(duì)第二種情況用 ${$a}[1]。
4.靜態(tài)變量
在函數(shù)內(nèi)部static $a = 0;
注意:聲明中用表達(dá)式的結(jié)果對(duì)其賦值會(huì)導(dǎo)致解析錯(cuò)誤如static $a =3+3;(error)
靜態(tài)變量?jī)H在局部函數(shù)域中存在(函數(shù)內(nèi)部),函數(shù)執(zhí)行完之后,變量值不會(huì)丟失,可用于遞歸調(diào)用
5.全局變量
在函數(shù)體內(nèi)定義的global變量,函數(shù)體外可以使用,在函數(shù)體外定義的global變量不能在函數(shù)體內(nèi)使用,在全局范圍內(nèi)訪問變量可以用特殊的 PHP 自定義 $GLOBALS 數(shù)組:
如:$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
在一個(gè)函數(shù)域內(nèi)用 global 語句導(dǎo)入的一個(gè)真正的全局變量實(shí)際上是建立了一個(gè)到全局變量的引用
global $obj;
注:對(duì)于變量的 static 和 global 定義是以 應(yīng)用 的方式實(shí)現(xiàn)的
6.給變量賦值:傳地址賦值(簡(jiǎn)單引用):
$bar = &$foo; //加&符號(hào)到將要賦值的變量前
改動(dòng)新的變量將影響到原始變量,這種賦值操作更加快速
注意:只有命名變量才可以傳地址賦值
注意:如果
$bar = &$a;
$bar = &$foo;
改變$bar的值只能改變變量foo的值,而不改變a的值(引用改變了)
7.PHP 超全局變量$GLOBALS : 包含一個(gè)引用指向每個(gè)當(dāng)前腳本的全局范圍內(nèi)有效的變量。該數(shù)組的鍵標(biāo)為全局變量的 名稱。從 PHP 3 開始存在 $GLOBALS 數(shù)組。
$_SERVER : 變量由 Web 服務(wù)器設(shè)定或者直接與當(dāng)前腳本的執(zhí)行環(huán)境相關(guān)聯(lián)。類似于舊數(shù)組 $HTTP_SERVER_VARS 數(shù)組(依然有效,但反對(duì)使用)。
$_GET : 經(jīng)由 HTTP GET 方法提交至腳本的變量。
$_POST : 經(jīng)由 HTTP POST 方法提交至腳本的變量。
$_COOKIE : 經(jīng)由 HTTP Cookies 方法提交至腳本的變量。
$_FILES : 經(jīng)由 HTTP POST 文件上傳而提交至腳本的變量。
文件上傳表單中要有 enctype="multipart/form-data"
$_ENV : 執(zhí)行環(huán)境提交至腳本的變量。
$_REQUEST :經(jīng)由 GET,POST 和 COOKIE 機(jī)制提交至腳本的變量,因此該數(shù)組并不值得信任。所有包含在該數(shù)組中的變量的存在與否以及變量的順序均按照 php.ini 中的 variables_order 配置指示來定義。該數(shù)組沒有直接模擬 PHP 4.1.0 的早期版本。參見 import_request_variables()。
注意: 自 PHP 4.3.0 起,$_FILES 中的文件信息不再存在于 $_REQUEST 中。
$_SESSION :當(dāng)前注冊(cè)給腳本會(huì)話的變量。
如何禁用phpinfo():
php.ini中
disable_functions = phpinfo()
重啟web服務(wù)器。
php中的常量
常量只能用define(常量名,常量值);
常量只能包含標(biāo)量數(shù)據(jù)(boolean,integer,float 和 string)。
可以簡(jiǎn)單的通過指定其名字來取得常量的值,不要在常量前面加上 $ 符號(hào)。如果常量名是動(dòng)態(tài)的,也可以用函數(shù)
constant() 來讀取常量的值。用 get_defined_constants() 可以獲得所有已定義的常量列表。
注: 常量和(全局)變量在不同的名字空間中。這意味著例如 TRUE 和 $TRUE 是不同的。
如果使用了一個(gè)未定義的常量,PHP 假定想要的是該常量本身的名字,如同用字符串調(diào)用它一樣(CONSTANT 對(duì)應(yīng) "CONSTANT")。此時(shí)將發(fā)出一個(gè) E_NOTICE 級(jí)的錯(cuò)誤。參見手冊(cè)中為什么 $w3sky[bar] 是錯(cuò)誤的(除非事先用 define() 將 bar 定義為一個(gè)常量)。如果只想檢查是否定義了某常量,用 defined() 函數(shù)。
常量和變量不同:
* 常量前面沒有美元符號(hào)($);
* 常量只能用 define() 函數(shù)定義,而不能通過賦值語句;
* 常量可以不用理會(huì)變量范圍的規(guī)則而在任何地方定義和訪問;
* 常量一旦定義就不能被重新定義或者取消定義;
* 常量的值只能是標(biāo)量。
定義常量
<?PHP
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
echo Constant; // outputs "Constant" and issues a notice.
?>
常量只能包含標(biāo)量數(shù)據(jù)(boolean,integer,float 和 string)。
調(diào)用常量時(shí),只需要簡(jiǎn)單的用名稱取得常量的值,而不能加“$”符號(hào),如:echo CONSTANT;
注: 常量和(全局)變量在不同的名字空間中。這意味著例如 TRUE 和 $TRUE 是不同的。
2.普通變量$a = "hello";
3.可變變量(使用兩個(gè)美元符號(hào)($))
$$a = "world";
兩個(gè)變量都被定義了:
$a 的內(nèi)容是“hello”并且 $hello 的內(nèi)容是“world”。
因此,可以表述為:
echo "$a ${$a}";或者 echo "$a $hello";它們都會(huì)輸出:hello world
要將可變變量用于數(shù)組,必須解決一個(gè)模棱兩可的問題。這就是當(dāng)寫下 $$a[1] 時(shí),解析器需要知道是想要 $a[1] 作為一個(gè)變量呢,還是想要 $$a 作為一個(gè)變量并取出該變量中索引為 [1] 的值。解決此問題的語法是,對(duì)第一種情況用 ${$a[1]},對(duì)第二種情況用 ${$a}[1]。
4.靜態(tài)變量
在函數(shù)內(nèi)部static $a = 0;
注意:聲明中用表達(dá)式的結(jié)果對(duì)其賦值會(huì)導(dǎo)致解析錯(cuò)誤如static $a =3+3;(error)
靜態(tài)變量?jī)H在局部函數(shù)域中存在(函數(shù)內(nèi)部),函數(shù)執(zhí)行完之后,變量值不會(huì)丟失,可用于遞歸調(diào)用
5.全局變量
在函數(shù)體內(nèi)定義的global變量,函數(shù)體外可以使用,在函數(shù)體外定義的global變量不能在函數(shù)體內(nèi)使用,在全局范圍內(nèi)訪問變量可以用特殊的 PHP 自定義 $GLOBALS 數(shù)組:
如:$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
在一個(gè)函數(shù)域內(nèi)用 global 語句導(dǎo)入的一個(gè)真正的全局變量實(shí)際上是建立了一個(gè)到全局變量的引用
global $obj;
注:對(duì)于變量的 static 和 global 定義是以 應(yīng)用 的方式實(shí)現(xiàn)的
6.給變量賦值:傳地址賦值(簡(jiǎn)單引用):
$bar = &$foo; //加&符號(hào)到將要賦值的變量前
改動(dòng)新的變量將影響到原始變量,這種賦值操作更加快速
注意:只有命名變量才可以傳地址賦值
注意:如果
$bar = &$a;
$bar = &$foo;
改變$bar的值只能改變變量foo的值,而不改變a的值(引用改變了)
7.PHP 超全局變量$GLOBALS : 包含一個(gè)引用指向每個(gè)當(dāng)前腳本的全局范圍內(nèi)有效的變量。該數(shù)組的鍵標(biāo)為全局變量的 名稱。從 PHP 3 開始存在 $GLOBALS 數(shù)組。
$_SERVER : 變量由 Web 服務(wù)器設(shè)定或者直接與當(dāng)前腳本的執(zhí)行環(huán)境相關(guān)聯(lián)。類似于舊數(shù)組 $HTTP_SERVER_VARS 數(shù)組(依然有效,但反對(duì)使用)。
$_GET : 經(jīng)由 HTTP GET 方法提交至腳本的變量。
$_POST : 經(jīng)由 HTTP POST 方法提交至腳本的變量。
$_COOKIE : 經(jīng)由 HTTP Cookies 方法提交至腳本的變量。
$_FILES : 經(jīng)由 HTTP POST 文件上傳而提交至腳本的變量。
文件上傳表單中要有 enctype="multipart/form-data"
$_ENV : 執(zhí)行環(huán)境提交至腳本的變量。
$_REQUEST :經(jīng)由 GET,POST 和 COOKIE 機(jī)制提交至腳本的變量,因此該數(shù)組并不值得信任。所有包含在該數(shù)組中的變量的存在與否以及變量的順序均按照 php.ini 中的 variables_order 配置指示來定義。該數(shù)組沒有直接模擬 PHP 4.1.0 的早期版本。參見 import_request_variables()。
注意: 自 PHP 4.3.0 起,$_FILES 中的文件信息不再存在于 $_REQUEST 中。
$_SESSION :當(dāng)前注冊(cè)給腳本會(huì)話的變量。
如何禁用phpinfo():
php.ini中
disable_functions = phpinfo()
重啟web服務(wù)器。
php中的常量
常量只能用define(常量名,常量值);
常量只能包含標(biāo)量數(shù)據(jù)(boolean,integer,float 和 string)。
可以簡(jiǎn)單的通過指定其名字來取得常量的值,不要在常量前面加上 $ 符號(hào)。如果常量名是動(dòng)態(tài)的,也可以用函數(shù)
constant() 來讀取常量的值。用 get_defined_constants() 可以獲得所有已定義的常量列表。
注: 常量和(全局)變量在不同的名字空間中。這意味著例如 TRUE 和 $TRUE 是不同的。
如果使用了一個(gè)未定義的常量,PHP 假定想要的是該常量本身的名字,如同用字符串調(diào)用它一樣(CONSTANT 對(duì)應(yīng) "CONSTANT")。此時(shí)將發(fā)出一個(gè) E_NOTICE 級(jí)的錯(cuò)誤。參見手冊(cè)中為什么 $w3sky[bar] 是錯(cuò)誤的(除非事先用 define() 將 bar 定義為一個(gè)常量)。如果只想檢查是否定義了某常量,用 defined() 函數(shù)。
常量和變量不同:
* 常量前面沒有美元符號(hào)($);
* 常量只能用 define() 函數(shù)定義,而不能通過賦值語句;
* 常量可以不用理會(huì)變量范圍的規(guī)則而在任何地方定義和訪問;
* 常量一旦定義就不能被重新定義或者取消定義;
* 常量的值只能是標(biāo)量。
定義常量
<?PHP
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
echo Constant; // outputs "Constant" and issues a notice.
?>
您可能感興趣的文章:
- PHP正在進(jìn)行時(shí)-變量詳解及字符串動(dòng)態(tài)插入變量
- php解析http獲取的json字符串變量總是空白null
- php使用parse_str實(shí)現(xiàn)查詢字符串解析到變量中的方法
- php中static靜態(tài)變量的使用方法詳解
- php判斷變量類型常用方法
- PHP中session變量的銷毀
- PHP 判斷常量,變量和函數(shù)是否存在
- PHP 變量類型的強(qiáng)制轉(zhuǎn)換
- 解析在PHP中使用全局變量的幾種方法
- PHP中使用unset銷毀變量并內(nèi)存釋放問題
- php 字符串中是否包含指定字符串的多種方法
- php變量與字符串的增刪改查操作示例
相關(guān)文章
php與c 實(shí)現(xiàn)按行讀取文件實(shí)例代碼
這篇文章主要介紹了php與c 實(shí)現(xiàn)按行讀取文件實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-01-01ThinkPHP中create()方法自動(dòng)驗(yàn)證實(shí)例
下面小編就為大家?guī)硪黄猅hinkPHP中create()方法自動(dòng)驗(yàn)證實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04仿Aspnetpager的一個(gè)PHP分頁類代碼 附源碼下載
最近正在學(xué)習(xí)php,想拿一些demo來練習(xí)一下,想起前段時(shí)間自己用.net寫的仿Aspnetpager控件的分頁類,就琢磨著用PHP來實(shí)現(xiàn)仿aspnetpager的分頁功能,隨便復(fù)習(xí)下2012-10-10Yii使用DeleteAll連表刪除出現(xiàn)報(bào)錯(cuò)問題的解決方法
這篇文章主要介紹了Yii使用DeleteAll連表刪除出現(xiàn)報(bào)錯(cuò)問題的解決方法,分析了相關(guān)的SQL語句及出現(xiàn)錯(cuò)誤的原因與改正方法,需要的朋友可以參考下2016-07-07ThinkPHP中使用ajax接收json數(shù)據(jù)的方法
這篇文章主要介紹了ThinkPHP中使用ajax接收json數(shù)據(jù)的方法,包括了前臺(tái)js代碼與對(duì)應(yīng)的PHP處理代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-12-12PHP中比較兩個(gè)字符串找出第一個(gè)不同字符位置例子
這是一個(gè)在stackoverflow上的問題。 給出兩個(gè)長(zhǎng)度相等的字符串,找出這兩個(gè)字符串中第一個(gè)不同的字符位置。2014-04-04CodeIgniter表單驗(yàn)證方法實(shí)例詳解
這篇文章主要介紹了CodeIgniter表單驗(yàn)證方法,結(jié)合實(shí)例形式詳細(xì)分析了CodeIgniter進(jìn)行表單驗(yàn)證的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-03-03