PHP變數使用總結

2021-08-03 11:38:55 字數 3945 閱讀 5987

1.定義常量define("constant", "hello world."); 

常量只能包含標量資料(boolean,integer,float 和 string)。

呼叫常量時,只需要簡單的用名稱取得常量的值,而不能加「$」符號,如:echo constant;如果常量名是動態的,也可以用函式constant()來讀取常量的值。用get_defined_constants()可以獲得所有已定義的常量列表。  

注: 常量和(全域性)變數在不同的名字空間中。這意味著例如 true 和 $true 是不同的。

常量和變數不同:

define() 函式定義乙個常量。

常量類似變數,不同之處在於:

define(name,value,case_insensitive)

引數 描述

name

必需。規定常量的名稱。

value

必需。規定常量的值。

case_insensitive

必需。規定常量的名稱是否對大小寫敏感。

若設定為 true,則對大小寫不敏感。預設是 false(大小寫敏感)。

2.普通變數$a = "hello";

3.可變變數(使用兩個美元符號($))

$$a = "world";

兩個變數都被定義了:

$a 的內容是「hello」並且 $hello 的內容是「world」。

因此,可以表述為:

echo "$a $";或者  echo "$a $hello";它們都會輸出:hello world

要將可變變數用於陣列,必須解決乙個模稜兩可的問題。這就是當寫下 $$a[1] 時,解析器需要知道是想要 $a[1] 作為乙個變數呢,還是想要 $$a 作為乙個變數並取出該變數中索引為 [1] 的值。解決此問題的語法是,對第一種情況用 $,對第二種情況用 $[1]。

例子:

<?php

$a="hello";

$$a="world!";

echo $a;echo "

"; //hello

echo $hello;echo "

";//world!

echo $$a;echo "

";//world!

echo $;echo "

";//world!

//echo "$a$$a";echo "

";//hello$hello

//echo "$a.$$a"; echo "

";//hello.$hello

echo "$a$";echo "

";        //helloworld!

//echo $a$;echo "

";//syntax error, unexpected '$', expecting ',' or ';'

echo $a.$$a;echo "

"; //helloworld!

echo $a.$;echo "

"; //helloworld!

echo "$a$hello";   echo "

"; //helloworld!

//echo $a$hello;   echo "

";//syntax error, unexpected t_variable, expecting ',' or ';' 

echo $a.$hello;   echo "

"; //helloworld!

echo $$a[0]."p";   echo "

";//p

echo $."p";   echo "

";//p

echo $a[0]."p";   echo "

";     //hp

echo $[0]."p";   echo "

";   //w

4.靜態變數

在函式內部static $a = 0;

注意:宣告中用表示式的結果對其賦值會導致解析錯誤如static  $a =3+3;(error)

靜態變數僅在區域性函式域中存在(函式內部),函式執行完之後,變數值不會丟失,可用於遞迴呼叫

5.全域性變數

global的作用是定義全域性變數,但是這個全域性變數不是應用於整個**,而是應用於當前頁面,包括include或require的所有檔案。

在函式體內定義的global變數,函式體外可以使用,在函式體外定義的global變數不能在函式體內使用,在全域性範圍內訪問變數可以用特殊的 php 自定義 $globals 陣列:

如:$globals["b"] = $globals["a"] + $globals["b"];

在乙個函式域內用 global 語句匯入的乙個真正的全域性變數實際上是建立了乙個到全域性變數的引用

global $obj;

注:1》對於變數的 static 和 global 定義是以 應用 的方式實現的

2》如果宣告全域性變數,最好一定要用$globals,否則如果在另乙個檔案的函式裡使用require_once('...php')無法將這個變數放入全域性變數空間。

例子:<?php

$a="a";

function a()

global $a;  //如果不把$a定義為global變數,函式體內是不能訪問$a的

echo $a;

a();

function c()

global $c;

$c="c";

c();

echo $c;  //正確,可以使用

global $b;

$b="b";

function b()

echo $b;   //沒有輸出任何值也沒有報錯

echo $b;

$bar = &$foo;  //加&符號到將要賦值的變數前

改動新的變數將影響到原始變數,這種賦值操作更加快速

注意:只有命名變數才可以傳位址賦值

注意:如果

$bar = &$a;

$bar = &$foo;

改變$bar的值只能改變變數foo的值,而不改變a的值(引用改變了)

7.php 超全域性變數$globals : 包含乙個引用指向每個當前指令碼的全域性範圍內有效的變數。該陣列的鍵標為全域性變數的 名稱。從 php 3 開始存在 $globals 陣列。

$_server : 變數由 web 伺服器設定或者直接與當前指令碼的執行環境相關聯。類似於舊陣列 $http_server_vars 陣列(依然有效,但反對使用)。

$_get :    經由 http get 方法提交至指令碼的變數。

$_post :   經由 http post 方法提交至指令碼的變數。

$_cookie : 經由 http cookies 方法提交至指令碼的變數。

$_files :  經由 http post 檔案上傳而提交至指令碼的變數。

檔案上傳表單中要有 enctype="multipart/form-data"

$_env :    執行環境提交至指令碼的變數。

$_request :經由 get,post 和 cookie 機制提交至指令碼的變數,因此該陣列並不值得信任。所有包含在該陣列中的變數的存在與否以及變數的順序均按照 php.ini 中的 variables_order 配置指示來定義。該陣列沒有直接模擬 php 4.1.0 的早期版本。參見 import_request_variables()。

注意:      自 php 4.3.0 起,$_files 中的檔案資訊不再存在於 $_request 中。

$_session :當前註冊給指令碼會話的變數。

感謝:

PHP變數的使用

php變數的宣告 在html中我們通常會用關鍵字來宣告乙個變數。而在php 中沒有宣告變數的命令 變數在我們第一次賦值給它的時候被建立的。在php中代替關鍵字的是乙個符號 php text hello world num 10 php變數的資料型別 因為php是一門弱型別語言,因此php的變數不需要...

mysql變數使用總結

set語句的學習 使用select定義使用者變數的實踐 將如下語句改成select的形式 set var select sum amount from penalties 我的修改 select var select sum amount from penalties 我這樣改,雖然是可以的。但是,...

mysql變數使用總結

set語句的學習 使用select定義使用者變數的實踐 將如下語句改成select的形式 set var select sum amount from penalties 我的修改 select var select sum amount from penalties 我這樣改,雖然是可以的。但是,...