好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > PHP中$GLOBALS與global的區別詳解

PHP中$GLOBALS與global的區別詳解

熱門標簽:臨沂智能電銷機器人軟件 地圖標注風向標 電梯外呼線路板維修視頻 十堰ai電話機器人效果怎么樣 安陽自動外呼系統價格是多少 芒果電銷機器人 上海公司外呼系統線路 浙江外呼電話系統軟件 銀川ai電話機器人

PHP中$GLOBALS和global都可以實現全局變量的功能,所以很多人都認為global和$GLOBALS[]只是寫法上面的差別,其實不然。$GLOBALS 是一個超級全局變量,其實是一個數組,而global 則是一個聲明全局變量的關鍵字!

一、超全局變量$GLOBALS

PHP超全局變量有很多,如下的都屬于超全局變量(Superglobal):

$GLOBALS,$_SERVER,$_GET,$_POST,$_FILES,$_COOKIE,$_SESSION,$_REQUEST,$_ENV。

官方說明:

$GLOBALS — 引用全局作用域中可用的全部變量。

一個包含了全部變量的全局組合數組。變量的名字就是數組的鍵。

即出現過的全局變量,就可以通過$GLOBALS這個數組取得。

  • $GLOBALS['var'] 是外部的全局變量$var本身。
  • global $var 是外部$var的同名引用或者指針。(錯誤:是個別名引用而已,非指針?。。。?/li>

PHP生命周期中,定義在函數體外部的所謂全局變量,函數內部是不能直接獲得的。

$foo="Example content";
test();
function test(){
  $foo="local variable";
  echo '$foo in current scope: '.$foo."br>";
  echo '$foo in global scope: '.$GLOBALS["foo"]."br>";
}

如上的例子,要訪問外部的$foo必須使用 $GLOBALS 數組。對于通過include文件進來的外部全局變量也適用。

php中global也有這樣的功能,它和$GLOBALS的區別在于:

global在函數產生一個指向函數外部變量的別名變量,而不是真正的函數外部變量。

$GLOBALS[]確確實實調用是外部的變量,函數內外會始終保持一致。

對于類中的成員變量,類中函數必須使用$this->的方式訪問,不能用$GLOBALS方式:

global的作用是定義全局變量,但是這個全局變量不是應用于整個網站,而是應用于當前頁面,包括include或require的所有文件。

二、實例講解

function t1(){
  global $var1,$var2;
  $var2=$var1;
}
function t2(){
  $GLOBALS['var3']=$GLOBALS['var1'];
}
$var1=5;
$var2=$var3=0;
t1();
print $var2."\n";
t2();
print $var3."\n";

執行結果為:

0
5

為什么不是2個5而是1個0和1個5呢?再修改一下例子:

function t1(){
  global $var1;
  $var1=2;
  unset($var1);
}
function t2(){
  $GLOBALS['var1']=3;
  unset($GLOBALS['var1']);
}
$var1=1;
t1();
print $var1."\n";
t2();
print $var1."\n";

執行結果只輸入一個2;

1、$GLOBALS是由所有已定義全局變量自動形成的數組。變量名就是該數組的索引。即$GLOBALS['var1']與函數外部的變量$var1是同一個變量,所以將$GLOBALS['var1'] 刪除后,該變量已不存在,所有無法輸出了。

注:$GLOBALS是自動全局變量。這意味著它在所有的腳本中都有效。在函數或方法中不需要使用 global $GLOBALS;來訪問它。

2、"global $var1;"是產生了函數外部$var1的別名變量"$var1",它不是真正的函數外部變量,他只存在于函數的內部,所以即使在函數內將別名變量刪除也不會影響外面的變量,但是可以修改函數外部變量的值。

或許有的人總想知道這個或那個的區別:

在php程序,包括其他程序的學習中,自己動手實驗,根據結果加上的思考,有的時候比上網查找可能會來得更快一些,更準確一些。下面我們來講一下,php在全局范圍內訪問變量要怎么辦?

例一:global定義全局變量。

function test_global(){
  global $var1;
  $var1='ok';
  unset($var1);
}
test_global();
$var2=$var1;
unset($var1);
echo $var2;

先不給出結果,自己運行一下程序。函數內部的變量可以訪問到了。從結果可以看出,unset只是斷開變量名與變量值連接,并沒有馬上銷毀變量的值,而且在函數內部定義的全局變量,實際在外部只是使用了函數內部的別名而已,所以我們在外面依然可以訪問$var1。

例二:$GLOBALS在函數內部訪問函數外面定義的變量。

$codetc='out';
function ff(){
  echo $GLOBALS['codetc'];
}
ff();

直接在函數內部使用$codetc是會出錯的。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

您可能感興趣的文章:
  • 如何在PHP環境中使用ProtoBuf數據格式
  • PHP const定義常量及global定義全局常量實例解析
  • PHP變量作用域(全局變量&局部變量)&global&static關鍵字用法實例分析
  • PHP global全局變量經典應用與注意事項分析【附$GLOBALS用法對比】
  • php利用ob_start()清除輸出和選擇性輸出的方法
  • PHP操作MySQL中BLOB字段的方法示例【存儲文本與圖片】
  • PHP編程文件處理類SplFileObject和SplFileInfo用法實例分析
  • PHP ob緩存以及ob函數原理實例解析

標簽:韶關 甘肅 梅河口 九江 昭通 遼陽 十堰 涼山

巨人網絡通訊聲明:本文標題《PHP中$GLOBALS與global的區別詳解》,本文關鍵詞  PHP,中,GLOBALS,與,global,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP中$GLOBALS與global的區別詳解》相關的同類信息!
  • 本頁收集關于PHP中$GLOBALS與global的區別詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 91精品啪国产在线观看免费牛牛| 18?国产?爽?黄?成人| 女人毛片| 法国黄色片| 徐倩被校长c到高潮了几次| 无码精品人妻一区二区三刘亦菲 | 娇妻出轨h客厅嗯啊呻吟| 99精品国产高清自在线看超| 老师沦为学生胯下奴h| 国产精品久久久久尤物| 国产精品国产三级国产专播| 又大又烫李淑敏| 天天摸日日添日日添无码| 人妻女教师~婬辱の教室动漫MP4| 父女乱操| 男人扒开添女人下部全网站| 噜噜狠狠色综合久色AⅤ视频| 雯雯被调教系列长篇小说| 被惩罚到哭着求饶| 男的插曲女的视频| 一边吃奶一边桶下边很爽| 人禽乱H交农场| 717秋霞三级good在线观看| 五个男人脱女人内衣| 国产无遮挡吃奶视频网站 | 99久久er热在这里只有精品16| 美女100%露屁股无遮挡| 哥哥家里没人使劲C我| 天堂久久久久久中文字幕| 福利视频夜一区二区18禁| 操英语课代表| 女友慢慢张双腿全文| 我挺进岳湿润的花苞李强小说| 麻绳泰剧在线观看免费观看完整版 | 中文字幕一区二区三区人妻电影 | 国产精品久久久久久久久久KTV| 国产精品一区二区欧美| 亚洲一区中文字幕在线观看| 日本成年人网站| 久久久精品免费| 丽娜拍三级的叫什么皆白|