深入理解PHP中的global
一、實現(xiàn)原理
在PHP的函數(shù)中,global語法是比較常見的,大家一定都知道一旦在函數(shù)中global了某個外部變量后,這個變量就可以在這個函數(shù)中使用了,但是也有不少網(wǎng)友不知道這是一個什么實現(xiàn)原理。現(xiàn)在上一個例子,大家一看就知道了:
$globalStr = '.net';
function globalTest(){
global $globalStr;
$globalStr = 'jb51'.$globalStr;
unset($globalStr);
}
globalTest();
echo $globalStr; //輸入: jb51.net
從這個例子看出global了一個變量就等于傳遞了一個引用進來。這樣理解的話,下面的代碼輸出結(jié)果就不難理解了。
二、php中global的作用
global $var1,$var2;
就是外部變量的同名引用,變量本身的作用范圍仍然在函數(shù)體內(nèi)。改變這些變量的值,外部的同名變量自然也改變。但一旦用了&,那么變量將不再是同名引用。
<?php
$var1 = 1;
$var2 = 2;
function test()
{
global $var1,$var2; // 作用范圍在函數(shù)體內(nèi)
$var1 = 3;
}
test();
echo $var1;
?>
結(jié)果是 3。因為是同名引用。
<?
$var1 = 1;
$var2 = 2;
function test()
{
global $var1,$var2;
$var1 = &var2;
}
test();
echo $var1
?>
結(jié)果是1。因為在函數(shù)內(nèi)的$var1經(jīng)過賦值后與$var2具有相同的引用了。進一步看下面的代碼。
<?php
$var1 = 1;
$var2 = 2;
function test_global()
{
global $var1,$var2;
$var1=&$var2;
$var1=7;
}
test_global();
echo $var1;
echo $var2;
?>
結(jié)果是1和7。因為在函數(shù)內(nèi)的$var1與$var2具有相同的引用。因此改變了$var1的值,$var2的值夜作了改變。
- php使用glob函數(shù)快速查詢指定目錄文件的方法
- PHP中使用glob函數(shù)實現(xiàn)一句話刪除某個目錄下的所有文件
- PHP循環(huán)遍歷數(shù)組的3種方法list()、each()和while總結(jié)
- PHP采用自定義函數(shù)實現(xiàn)遍歷目錄下所有文件的方法
- PHP數(shù)組遍歷知識匯總(包含遍歷方法、數(shù)組指針操作函數(shù)、數(shù)組遍歷測速)
- php遍歷數(shù)組的4種方法總結(jié)
- PHP遍歷數(shù)組的幾種方法
- PHP 數(shù)組遍歷方法大全(foreach,list,each)
- PHP 數(shù)據(jù)庫樹的遍歷方法
- PHP使用glob函數(shù)遍歷目錄或文件夾的方法
相關文章
php checkdate、getdate等日期時間函數(shù)操作詳解
PHP的日期時間函數(shù)date()中介紹了PHP日期時間函數(shù)的簡單用法,這類將介紹更多的函數(shù)來豐富我們的應用。2010-03-03Php Image Resize圖片大小調(diào)整的函數(shù)代碼
php下可以將圖片大小調(diào)整的函數(shù)代碼,需要的朋友可以參考下。2011-01-01php使用Header函數(shù),PHP_AUTH_PW和PHP_AUTH_USER做用戶驗證
這篇文章主要介紹了php使用Header函數(shù),PHP_AUTH_PW和PHP_AUTH_USER做用戶驗證的方法,結(jié)合實例形式分析了PHP使用Header函數(shù)調(diào)用登錄驗證及PHP_AUTH_PW和PHP_AUTH_USER進行驗證處理的相關技巧,需要的朋友可以參考下2016-05-05