PHP語法中的變數

2021-04-13 11:08:46 字數 4670 閱讀 2638

php中變數不需要宣告資料型別,直接給變數賦值即可,變數會在賦值時自動轉換為相應的資料型別。但是,需要注意

php中使用乙個美元符號後面跟上量名稱,來表示乙個變數,而且變數的名稱是對區分大小寫的。

變數名應與

php中其它的標記一樣遵循相同的規則。乙個有效的變數名由字母或者下劃線開頭,後面跟上任意數量的字母,數字,或者下劃線。按照正常的正規表示式,它將被表述為:

'[a-za-z_/x

7f-/xff][a-za-z0-9_/x

7f-/xff]*'

。例如:

<?php

$var = "abc";

$var = "def";

echo "$var, $var";//

輸出為"abcdef"

$4site = 'not yet';//

無效變數,以數字開始

$_4site = 'not yet';//有效

$t?yte = 'mansikka'; //有效

?>

在這裡通過

"="列舉了幾種變數的賦值方式。在

php中,還支援另一種賦值方式,稱為變數的引用賦值,例如下面的示例:

<?php

$foo = 'bob';//

為變數$foo賦值

$bar = &$foo;//

變數$bar.

引用了變數

$foo的值

$bar = "my name is $bar";//

修改變數

$bar的值

echo $bar;

echo $foo;//

變數$foo

的值也被修改

?>

從這裡可以看出,對乙個變數值的修改將會導致對另外乙個變數值的修改。從本質上講,變數的引用賦值導致兩個變數指向同乙個記憶體位址。因此,不論對哪乙個變數進行修改,修改的是同乙個記憶體位址中的資料,從而出現同時被修改的結果。

1

.常量在

php中提供了大量的預定義變數,也就是常量。同時還允許使用者自定義常量,常量的值在程式執行過程中不會發生改變。常用的系統常量有:

l$globals

包含乙個引用指向每個當前指令碼的全域性範圍內有效的變數。

l$_server

變數由web

伺服器設定或者直接與當前指令碼的執行環境相關聯。

$_get

由http get

方法提交至指令碼的變數。

l$_post

由http post

方法提交至指令碼的變數。

l$_cookie

由http cookies

方法提交至指令碼的變數。

l$_files

由http post

檔案上傳而提交至指令碼的變數。

l$_env

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

l$_request

由get

,post

和cookie

機制提交至指令碼的變數

如果使用者需要自定義常量,可使用

define()

函式。例如,下面定義乙個名為

host

的常量:

<?php

define("host","www.itzcn.com");

echo host;

?>

2

.變數作用域

變數的作用域即指變數的有效範圍,也稱為變數的生命週期。在

php中,大部分變數只的乙個單獨的範圍,這個單獨的範圍跨度包含了使用

include

和require

引入的檔案。按作用域的大小,

php變數可分為全域性變數和區域性變數。

例如,對於下面的

php**:

<?php

$a = 1;

include "test.inc";

?>

這裡變數

$a將會在包含檔案

test.inc

中生效。但是,在使用者自定義函式中,乙個區域性函式範圍將被引入。任何用於函式內部的變數按預設情況將被限制在區域性函式範圍內。又例如,下面的示例

<?php

$a = 1; /* 變數a

具有全域性作用域

*/function test()

test();

?>

這個指令碼不會有任何輸出,因為

echo

語句引用了乙個區域性範圍的變數

$a,而且在這個範圍內,它並沒有被賦值。讀者可能注意到

php的全域性變數和

c語言有一點點不同,在

c語言中,全域性變數在函式中自動生效,除非被區域性變數覆蓋。這可能引起一些問題,有些人可能漫不經心的改變乙個全域性變數。

php中全域性變數在函式中使用時必須申明為全域性。

下面為乙個使用全域性變數的正確示例:

<?php

$a = 1;

$b = 2;

function sum()

sum();

echo $b;

?>

以上指令碼的輸出將是

"3"。在函式中申明了全域性變數$a和

$b,任何變數的所有引用變數都會指向到全域性變數。對於乙個函式能夠申明的全域性變數的最大個數,

php

沒有限制。在全域性範圍內訪問變數的第二個辦法,是用特殊的

php自定義

$globals

陣列。前面的例子可以寫成:

<?php

$a = 1;

$b = 2;

function sum()

sum();

echo $b;

?> 在

$globals

陣列中,每乙個變數為乙個元素,鍵名對應變數名,值變數的內容。

$globals

之所以在全域性範圍內存在,是因為

$globals

是乙個超全域性變數。

3

.靜態變數和動態變數

靜態變數僅在區域性函式域中存在,但當程式執行離開此作用域時,其值並不丟失。下面是演示需要靜態變數的例子:

<?php

function test ()

?>

本函式沒什麼用處,因為每次呼叫時都會將

$a的值設為

0並輸出

"0"。將變數加一的

$a++

沒有作用,因為一旦退出本函式則變數

$a就不存在了。要寫乙個不會丟失本次計數值的計數函式,要將變數

$a定義為靜態的,如下演示了修改後使用靜態變數的例子:

<?php

function test()

?>

現在,每次呼叫

test()

函式都會輸出

$a的值並加一。

4

.動態變數

有時候使用動態變數會很方便,所謂動態變數指的是乙個變數的變數名可以動態的設定和使用。乙個普通的變數通過宣告來設定,例如:

<?php

$a = "hello";

?>

乙個可變變數獲取了乙個普通變數的值作為這個可變變數的變數名。在上面的例子中

hello

使用了兩個美元符號(

$)以後,就可以作為乙個可變變數的變數了。例如:

<?php

$$a = "world";

?>

這時,兩個變數都被定義了:

$a的內容是

「hello」

並且$hello

的內容是

「world」

。因此,可以表述為:

<?php

echo "$a $";

?>

以下寫法更準確並且會輸出同樣的結果:

<?php

echo "$a $hello";

?>

它們都會輸出:

hello world

5

.外部變數

在php中,將從

html

頁面中提交過來的

form

標記中的元素當作外部變數來使用。外部變數名稱和表單中的元素名稱相同。

例如,下面的乙個簡單的

html

頁面的內容:

請輸入姓名:興趣

:

這個檔案提交到

sub.php

中進行處理,該檔案包括一行**,如下所示:

<?php

echo $uname.",

你的興趣是

".$uinterest;

?>

需要注意的是,

php中使用的變數名稱與表單提交的名稱必須一致,執行效果如圖

22-4

所示。

圖22-4

使用外部變數示例

在php

中,另一種獲取外部變數的方式就是使用

cookie

,任何由客戶端返回的

cookie

都會被自動轉換為

php的外部變數。

php基礎 語法 變數

一 php語法 1 php語言需要寫在標籤裡面 2 php語言每行結束需要使用 作為結束符 3 php是一門弱語言,不要求先宣告變數 4 可巢狀在html和js語言中 5 對大小寫敏感,需要嚴格區分大小寫 二 php變數 1 開頭使用字母或者 下劃線 2 只能使用字母 下劃線 數字組合 3 變數命名...

php變數和基本語法

1 php的基本語法 2 php基本資料型別 整形,浮點數,字串,布林型 如果在程式中只是宣告了變數,並沒有直接賦值,那麼在記憶體中該變數的值是null 在php中乙個整型資料可以是八進位制 0打頭,a 035 十進位制,十六進製制 以0x 打頭,a 0x78 php不支援無符號整數,整數都是有符號...

PHP基本語法 變數(2)

變數可以大致分為三個大類 標量型別 4種 復合型別 2種 特殊型別 2種 4種標量型別 布林型 整型 浮點型 字串。2種復合型別 陣列 物件。2種特殊型別 資源 空。由於本篇部落格的寫作時間關係,以下對兩種復合型別變數進行簡單介紹 陣列 array 與物件 object 後續將補全其他型別的介紹。物...