一、變量的賦值
變量聲明後就可以給其賦值,有兩種方式:值賦值和引用賦值。
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". */
?>
二、變量的作用域
php腳本的任何位置都可以聲明變量,但聲明變量的位置會大大影響訪問變量的范圍。這個可訪問的范圍稱為作用域(scope)。
php變量的4中作用域:
△ 局部變量
△ 函數參數
△ 全局變量
△ 靜態變量
1、局部變量
在函數中聲明的變量認為是局部變量,只能在函數中引用,退出聲明變量的函數時,該變量及相應的值就會撤銷。消除了導致全局訪問的變量被有意或無意修改的可能性。
$x = 4 ;
function assignx ( ) {
$x = 0 ;
print "$x inside function is $x . <br>" ;
}
assignx ( ) ;
print "$x outside of function is $x . <br>" ;
代碼的執行結果為:
$x inside function is 0 .
$x outside function is 4 .
2、函數參數
php和其他編程語言一樣,任何接受參數的函數都必須在函數首部中聲明這些參數。雖然這些參數接受函數外部的值,但退出函數後就無法再訪問這些參數。(按引用傳遞的參數除外)
例如:
function x10 ( $value ) {
$value = $value * 10 ;
return $value ;
}
函數執行完畢,參數即將撤銷。
3、全局變量
與局部變量相反,全局變量可以在程序的任何位置訪問。當在函數中改變全局變量時,需要在該函數中將變量顯示地生命為全局變量,只要在函數中的該變量前加上global即可。
例如:
$somevar = 15 ;
function addit ( ) {
global $somevar ;
$somevar ++ ;
print "somevar is $somevar" ;
}
addit ( ) ;
$somevar 顯示的值應為16 ,但是,若去掉 global $somevar ; 這行,變量$somevar 將被隱含的設置為0,再加1 ,最後顯示的值就是1 。
聲明全局變量的另一方法是使用php的$global數組,如下:
$somevar = 15 ;
function addit ( ) {
$globals[ 'somevar' ]++ ;
}
addit ( ) ;
print "somevar is ". $globals[ 'somevar' ] ;
返回值如下: somevar is 16 .
4、靜態變量
靜態(static)作用域。普通變量的函數參數在函數結束時會撤銷,但靜態變量在函數退出時不會丟失值,並且再次調用此函數時還能保留這個值。在汴梁明前加上關鍵字 static 就可以聲明一個靜態變量。
static $somevar ;
考慮一個例子:
function keep_track ( ) {
static $count = 0 ;
$count ++ ;
print $count ;
print "<br>" ;
}
keep_track ( ) ;
keep_track ( ) ;
keep_track ( ) ;
keep_track ( ) ;
若$count 沒有被指明為靜態(相應的,$count就是一個局部變量),輸出將會是
1
1
1
1
因為$count是靜態的,它會在每次執行函數時保留前面的值。輸出如下:
1
2
3
4
靜態作用域對於遞歸函數很有用。遞歸函數(recursive function)是一個功能強大的編程概念,它是一個可以重復調用自身的函數,直到滿足某個條件為止。
5、 php的超級全局變量
php提供了很多有用的預定義變量,可以在執行腳本的人和位置訪問,用於提供大量與環境有關的信息。可以通過這些變量獲得關於當前用戶會話、用戶操作系統環境和本地操作環境等詳細信息。php會創建部分變量,而其他許多變量的可用性和值則取決於操作系統和web服務。
輸出所有預定義變量:
foreach ( $_server as $var => $value ) {
echo "$var => $value <br>" ;
}
顯示用戶的ip地址:
print "hi!your ip address is ".$_server[ ' remote_addr' ] ;