php中不需要顯示宣告變數,變數宣告可以與賦值同時進行。好的程式設計習慣是:所有變數應當在使用前進行宣告,最好帶有注釋。
一、變數的賦值
變數宣告後就可以給其賦值,有兩種方式:值賦值和引用賦值。
1、值賦值
$color = "red" ;
$sum = 12+"15" ; /* $sum = 27 */
2、 若希望兩個變數指向乙個值的同乙個副本,則需要通過引用賦值。
引用賦值
所建立的變數與另乙個變數引用的內容相同,如果多個變數引用了同乙個內容,修改其中任意乙個變數,在其餘的變數上都將有所反映。
例子:
<?php
$value1 = "hello" ;
$value2 = &value1 ; /*$value1 and $value2 both equal "hello" .*/
$value2 = "goodbye" ; /*$value1 and $value2 both equeal "goodbye". */
?zclqum>
二、變數的作用域
php指令碼的任何位置都可以宣告變數,但宣告變數的位置會大大影響訪問變數的範圍。這個可訪問的範圍稱為作用域(scope)。
php變數的4中作用域:
△ 區域性變數
△ 函式引數
△ 全域性變數
△ 靜態變數
1、區域性變數
在函式中宣告的變數認為是區域性變數,只能在函式中引用,退出宣告變數的函式時,該變數及相應的值就會撤銷。消除了導致全域性訪問的變數被有意或無意修改的可能性。
$x = 4 ;
function assignx ( )
assignx ( ) ;
print "\$x outside of function is $x .
" ;
**的執行結果為:
$x inside function is 0 .
$x outside f is 4 .
2、函式引數
php和其他程式語言一樣,任何接受引數的函式都必須在函式首部中宣告這些引數。雖然這些引數接受函式外部的值,但退出函式後就無法再訪問這些引數。(按引用傳遞的引數除外)
例如: zclqum
function x10 ( $value )
函式執行完畢,引數即將撤銷。
3、全域性變數
與區域性變數相反,全域性變數可以在程式的任何位置訪問。當在函式中改變全域性變數時,需要在該函式中將變數顯示地生命為全域性變數,只要在函式中的該變數前加上global即可。
例如:
$somevar = 15 ;
function addit ( )
addit ( ) ;
$somevar 顯示的值應為16 ,但是,若去掉 global $somevar ; 這行,變數$somevar 將被隱含的設定為0,再加1 ,最後顯示的值就是1 。
宣告全域性變數的另一方法是使用php的$global陣列,如下:
$somevar = 15 ;
function addit ( )
addit ( ) ;
print "somevar is ". $globals[ 'somevar' ] ;
返回值如下: somevar is 16 .
4、靜態變數
靜態(s作用域。普通變數的函式引數在函式結束時會撤銷,但靜態變數在函式退出時不會丟失值,並且再次呼叫此函式時還能保留這個值。在汴梁明前加上關鍵字 static 就可以宣告乙個靜態變數。
static $somevar ;
考慮乙個例子:
function keep_track ( )
keep_track ( ) ;
keep_track (zclqum ) ;
keep_track ( ) ;
keep_track ( ) ;
若$count 沒有被指明為靜態(相應的,$count就是乙個區域性變數),輸出將會是
1 1
1 1
因為$count是靜態的,它會在每次執行函式時保留前面的值。輸出如下:
1 2
3 4
靜態作用域對於遞迴函式很有用。遞迴函式(recursive function)是乙個功能強大的程式設計概念,它是乙個可以重複呼叫自身的函式,直到滿足某個條件為止。
5、 php的超級全域性變數
PHP變數使用總結
1.定義常量define constant hello world.常量只能包含標量資料 boolean,integer,float 和 string 呼叫常量時,只需要簡單的用名稱取得常量的值,而不能加 符號,如 echo constant 如果常量名是動態的,也可以用函式constant 來讀取...
PHP變數的變數
什麼叫作變數的變數?根據php手冊,變數的變數是指取得乙個變數的值並把它作為另乙個變數的變數名。這表述顯得相當的直接,容易和那些在乙個句子中使用 變數 這個詞弄混淆。給乙個簡單的例子,你定義乙個變數 x 等於 this 然後定義乙個變數的變數,意味著你把 x 的值作為新變數的名,在這個例子中,這個新...
PHP超級全域性變數總結
php有9個預定義變數陣列,分別總結如下 1 server server超級全域性變數包含由web伺服器建立的資訊,它提供了伺服器和客戶配置及當前請求環境的有關資訊。根據伺服器不同,server中的變數值和變數個數會有差別,不過一般都可以找到cgi1.1規範中定義的變數。其中包括 server ht...