PHP宣告變數

2021-09-06 23:08:24 字數 4238 閱讀 1223

變數是指在程式的執行過程中隨時可以發生變化的量,在**中可以只使用乙個變數,也可以使用多個變數,變數中可以存放單詞、數值、日期以及屬性等。變數的值是臨時的,當程式執行的時候,該值是存在的,如果程式結束,變數的值就會丟失。雖然在前面的示例中也使用到了變數,但是沒有詳細的說明,本節將詳細介紹如何建立變數,以及如何引用變數。

2.4.1  建立變數

php中的變數是用美元符號($)作為字首的標示符,識別符號是乙個標識不同物件的符號,如變數的名稱,函式的名稱,或者其他使用者自定義物件的名稱。在php中,識別符號的命名必須符合下面的規定:

l  識別符號可以由乙個或多個字元組成,但必須以字母或下劃線開頭。此外,識別符號只能由字母、數字、下劃線字元和從127到255的其他ascii字元組成。如my_a、ss、_value這些識別符號名稱都是合法的,而q^a、4tt這些變數的名稱是不合法的。

l  識別符號區分大小寫。因此,變數$recipe不同於變數$recipe、$recipe或$recipe。

l  識別符號可以是任意長度。這很有好處,因為這樣一來,程式設計師就能通過識別符號名準確地描述識別符號的用途。

l  識別符號名稱不能與任何php預定義關鍵字相同。

在建立變數的過程中,先宣告變數,再給變數賦值是乙個好的習慣。由於php是一種弱型別語言,在宣告變數時,不需要顯示宣告變數,變數可以存放任何型別的值,在php中,變數在執行時進行型別檢查,並且可以用另乙個不同型別的值取代變數的值,下面宣告乙個變數,並且讓另乙個不同型別的值取代變數的值,再為宣告乙個沒有賦值的變數,具體**如下所示:

$what = 「yound tang」;

$what = 25;

$name;

在php中,給變數賦值有兩種方式,分別為值賦值和引用賦值。值賦值是直接把乙個數值通過賦值表示式複製給變數,會把該變數原來的數值覆蓋,如果在宣告變數時,沒有賦值,其行為就形同null。在宣告變數時賦值是一種常用的變數的賦值方法,使用示例如下所示:

$name = 「唐曉陽」;

$age = 「23」;

$*** = 「男」;

echo 「你的姓名是:」.$name.」」;

echo 「你的年齡是:」.$age.」」;

echo 「你的性別是:」.$***.」」;

執行該段**,執行結果如下所示:

你的姓名是:唐曉陽

你的年齡是:23

你的性別是:男

在php中,宣告變數可以直接賦值,也可以不賦值,當需要使用變數儲存值時,可以引用變數賦值,引用賦值表示所建立的變數與另乙個變數引用的內容相同。因此,如果多個變數引用了同乙個內容,修改其中任意乙個變數,在其餘的變數上都將有所反映。在等於號後面加乙個&符號就可以完成引用賦值。引用賦值的示例形式如下所示。

$value1="hello world";

$value2=& $value1;

$value2="goodbye";

echo $value1.」

」;echo $value2.」」;

在上述**中,建立乙個變數value1並賦值為「hello world」,在下面的語句中,變數$value2採用了引用賦值,即把value1的值賦給了value2,此時這兩個變數就是乙個生命共同體了,當乙個發生變化,另外乙個就會顯示出結果,該段**執行結果如下所示:

goodbye

goodbye

2.4.2  變數作用域

宣告變數的位置決定了變數的作用域,變數的作用域決定了程式的那些部分可以訪問該變數,那些部分不可以訪問該變數,在php中,變數的作用域範圍可以分為四類:區域性變數、函式引數、全域性變數和靜態變數,本節主要介紹變數的這幾種作用域範圍。

1.區域性變數

在乙個函式中宣告乙個變數是那個函式的區域性變數,也就是說該變數只能被函式內部成員訪問,函式外部成員是不能訪問該變數,並且不可見。預設情況下,函式內部成員不能訪問函式外定義的變數(平常所說的的全域性變數)。有時區域性變數很有用,因為區域性變數能夠消除出現一位***的可能性,否則這些***將導致可全域性訪問的變數被有意或無意地修改。下面建立乙個使用區域性變數的示例,該示例如**2.13所示。

**2.13  使用區域性變數

<?php

$count =10;

function addcount()

addcount();

echo $count;

?>

執行**2.13,執行結果如下所示:

20010

有輸出結果知,該段**輸出了兩個不同的值,這是因為函式addcount函式中的變數為區域性變數,修改區域性變數的值不會影響函式外部的任何值,函式中的變數在程式結束時被拋棄,所以全域性變數值還是10。

2.函式引數

在php中,函式可以接受相應的引數,雖然這些引數是接受函式外部的值,但退出函式後就無法訪問這些引數,在函式執行結束後,引數的值就會消失,和函式的執行有很大的關係。函式引數是在函式後面的括號內宣告,下面使用該引數建立乙個示例,該示例如**2.14所示。

**2.14  運用函式引數

<?php

function echonum($age,$class)

echonum(18,"計算機技術與科學系08級5班");

?>

執行該段**,執行結果如下所示:

你的年齡是:18

所在班級:計算機技術與科學系08級5班

函式引數也可以稱為是區域性變數,意味著這些引數只在函式內部起作用,在函式的外部不能訪問這些變數,同樣當函式執行結束時,變數同樣也會撤銷。

3.全域性變數

全域性變數可以在整個php程式中,任何地方訪問,但是如果要修改乙個全域性變數,必須在修改該變數的函式中顯式的宣告為全域性變數,在函式中顯示宣告全域性變數很簡單,只需在函式中使用global關鍵字宣告就可以,下面建立乙個使用全域性變數的示例,具體講解在函式中如何修改全域性變數,該示例如**2.15所示。

**2.15  在函式中修改全域性變數

<?php

function addnum()

$num = 100;

addnum();

?>

執行**2.15,執行結果如下所示:

200如果不在$num前加global,該變數會被認為是區域性變數,此時頁面上顯示的值為0;新增global後,就可以修改全域性變數了,宣告全域性變數還有另外一種方法,那就是使用php的$globals陣列,使用該陣列和使用global的效果一樣,下面建立乙個使用$globals陣列的示例,該示例如**2.16所示。

**2.16  使用$globals陣列

<?php

function addnum()

$num = 100;

addnum();

?>

執行**2.16,執行結果如下所示:

該值是:200

在使用全域性變數時,一定要注意,因為使用全域性變數很容易發生意外。

4.靜態變數

靜態變數在兩次呼叫函式之間其值不變,靜態變數僅在區域性函式域中宣告,用關鍵字static可以宣告乙個靜態變數。靜態變數在函式退出時,不會丟失值,並且再次呼叫此函式時,還能保留值。下面建立乙個使用靜態變數的示例,該示例如**2.17所示。

**2.17  使用靜態變數

<?php

function keepnum()

$num = 10;

echo "變數num的值是:".$num."

";keepnum();

keepnum();

?>

執行**2.17,執行結果如下所示:

變數num的值是:10

現在靜態變數的值是:1

現在靜態變數的值是:2

由**2.17執行結果知,由於在函式中指明了變數為靜態變數,因此在執行函式時保留了前面的值。

2.3.3  變數的變數

建立乙個變數,需要該變數賦值,當然也可以引用賦值,有時候也需要使用該變數的內容作為變數名,也就是說這個變數存放在另乙個變數中。定義變數的變數只需要在變數的前面再新增乙個美元符號即可。下面建立乙個示例,該示例**如下所示:

<?php

$name = "yound";

$$name = " tang";

echo  $name.$$name;

?>

執行該端**,執行結果如下所示:

yound tang

由上面例子知,乙個可變變數獲取了乙個普通變數的值作為這個可變變數的變數名。就可以作為乙個可變變數的變數了,這時,兩個變數都被定義了。

php宣告變數開頭,php變數宣告

1 什麼是變數?變數就是可變的量,我們可以把它看做是?個容器之所以叫做變數。是因為一旦被宣告後在整個指令碼中都會可以動態的改變變數的值。2 變數的命名規範 1 以 開頭 2 由字母數字下劃線組成,但是不能以數字開頭 3 可以使用中文,但是不推薦使yongoing 4 變數名嚴格區分大小寫 5 變數名...

一 PHP語言基礎 PHP變數 宣告變數和作用域

變數是指在程式執行過程中其值可以變化的量.它實質上是計算機記憶體單元的命名,因此借助變數名就可以訪問記憶體中的資料.php中的變數名稱用 和識別符號表示,並遵循以下約定 1 在php中的變數名是區分大小寫的.2 變數名必須是以美元符號 開始 3 變數名開頭可以以下劃細或字母開始 4 這是名可以包含一...

PHP變數的宣告和使用

php中的變數名稱用 和識別符號表示,變數名是區分大小寫的。變數賦值,是指給變數乙個具體的資料值,對於字串和數字型別的變數,可以通過 來實現,格式為 name value php中變數名不能以數字和其他字元開頭,其他字元包括 等 引用賦值 從php4開始,php引入了 引用賦值 的概念。用不同的名字...