|
一、變量的賦值
變量聲明后就可以給其賦值,有兩種方式:值賦值和引用賦值。
1、值賦值
$color = "red" ;
$sum = 12+"15" ; /* $sum = 27 */
2、 若希望兩個變量指向一個值的同一個副本,則需要通過引用賦值。
引用賦值
所創(chuàng)建的變量與另一個變量引用的內(nèi)容相同,如果多個變量引用了同一個內(nèi)容,修改其中任意一個變量,在其余的變量上都將有所反映。
例子:
<?php
$value1 = "hello" ;
$value2 = &value1 ; /*$value1 and $value2 both equal "hello" .*/
$value2 = "goodbye" ; /*$value1 and $value2 both equeal "goodbye". */
?>
二、變量的作用域
php腳本的任何位置都可以聲明變量,但聲明變量的位置會大大影響訪問變量的范圍。這個可訪問的范圍稱為作用域(scope)。
php變量的4中作用域:
△ 局部變量
△ 函數(shù)參數(shù)
△ 全局變量
△ 靜態(tài)變量
1、局部變量
在函數(shù)中聲明的變量認為是局部變量,只能在函數(shù)中引用,退出聲明變量的函數(shù)時,該變量及相應(yīng)的值就會撤銷。消除了導(dǎo)致全局訪問的變量被有意或無意修改的可能性。
$x = 4 ;
function assignx ( ) {
$x = 0 ;
print "/$x inside function is $x . <br>" ;
}
assignx ( ) ;
print "/$x outside of function is $x . <br>" ;
代碼的執(zhí)行結(jié)果為:
$x inside function is 0 .
$x outside function is 4 .
2、函數(shù)參數(shù)
php和其他編程語言一樣,任何接受參數(shù)的函數(shù)都必須在函數(shù)首部中聲明這些參數(shù)。雖然這些參數(shù)接受函數(shù)外部的值,但退出函數(shù)后就無法再訪問這些參數(shù)。(按引用傳遞的參數(shù)除外)
例如:
function x10 ( $value ) {
$value = $value * 10 ;
return $value ;
}
函數(shù)執(zhí)行完畢,參數(shù)即將撤銷。
3、全局變量
與局部變量相反,全局變量可以在程序的任何位置訪問。當(dāng)在函數(shù)中改變?nèi)肿兞繒r,需要在該函數(shù)中將變量顯示地生命為全局變量,只要在函數(shù)中的該變量前加上GLOBAL即可。
例如:
$somevar = 15 ;
function addit ( ) {
GLOBAL $somevar ;
$somevar ++ ;
print "somevar is $somevar" ;
}
addit ( ) ;
$somevar 顯示的值應(yīng)為16 ,但是,若去掉 GLOBAL $somevar ; 這行,變量$somevar 將被隱含的設(shè)置為0,再加1 ,最后顯示的值就是1 。
聲明全局變量的另一方法是使用php的$GLOBAL數(shù)組,如下:
$somevar = 15 ;
function addit ( ) {
$GLOBALS[ 'somevar' ]++ ;
}
addit ( ) ;
print "somevar is ". $GLOBALS[ 'somevar' ] ;
返回值如下: somevar is 16 .
4、靜態(tài)變量
靜態(tài)(static)作用域。普通變量的函數(shù)參數(shù)在函數(shù)結(jié)束時會撤銷,但靜態(tài)變量在函數(shù)退出時不會丟失值,并且再次調(diào)用此函數(shù)時還能保留這個值。在汴梁明前加上關(guān)鍵字 STATIC 就可以聲明一個靜態(tài)變量。
STATIC $somevar ;
考慮一個例子:
function keep_track ( ) {
STATIC $count = 0 ;
$count ++ ;
print $count ;
print "<br>" ;
}
keep_track ( ) ;
keep_track ( ) ;
keep_track ( ) ;
keep_track ( ) ;
若$count 沒有被指明為靜態(tài)(相應(yīng)的,$count就是一個局部變量),輸出將會是
1
1
1
1
因為$count是靜態(tài)的,它會在每次執(zhí)行函數(shù)時保留前面的值。輸出如下:
1
2
3
4
靜態(tài)作用域?qū)τ谶f歸函數(shù)很有用。遞歸函數(shù)(recursive function)是一個功能強大的編程概念,它是一個可以重復(fù)調(diào)用自身的函數(shù),直到滿足某個條件為止。
5、 php的超級全局變量
php提供了很多有用的預(yù)定義變量,可以在執(zhí)行腳本的人和位置訪問,用于提供大量與環(huán)境有關(guān)的信息。可以通過這些變量獲得關(guān)于當(dāng)前用戶會話、用戶操作系統(tǒng)環(huán)境和本地操作環(huán)境等詳細信息。php會創(chuàng)建部分變量,而其他許多變量的可用性和值則取決于操作系統(tǒng)和WEB服務(wù)。
輸出所有預(yù)定義變量:
foreach ( $_SERVER as $var => $value ) {
echo "$var => $value <br>" ;
}
顯示用戶的IP地址:
print "HI!Your IP address is ".$_SERVER[ ' REMOTE_ADDR' ] ;
php中要使用預(yù)定義變量數(shù)組,必須在php.INI文件中啟用配置參數(shù) track_vars 。
php技術(shù):PHP的變量總結(jié) 新手推薦,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。