Jadual Kandungan
一、全局变量$GLOBALS
二、实例讲解
Rumah pembangunan bahagian belakang tutorial php PHP中全局变量$GLOBALS和global的区别

PHP中全局变量$GLOBALS和global的区别

Jun 20, 2016 pm 01:04 PM
pembolehubah php

本篇文章分享一下PHP中的全局变量$GLOBALS和global的区别。

一、全局变量$GLOBALS

PHP全局变量有很多,如下的都属于超全局变量(Superglobal):
 
$GLOBALS,$_SERVER,$_GET,$_POST,$_FILES,$_COOKIE,$_SESSION,$_REQUEST,$_ENV。
 

官方说明:$GLOBALS — 引用全局作用域中可用的全部变量。一个包含了全部变量的全局组合数组。变量的名字就是数组的键。即出现过的全局变量,就可以通过$GLOBALS这个数组取得。

PHP生命周期中,定义在函数体外部的所谓全局变量,函数内部是不能直接获得的。

</span>$foo="Example content";</p>test();<br />function test(){<br />    $foo="local variable";<br />    echo '$foo in current scope: '.$foo."<br>";<br />    echo '$foo in global scope: '.$GLOBALS["foo"]."<br>";<br /><p>}</p>
Salin selepas log masuk

上例子,要访问外部的$foo必须使用 $GLOBALS 数组。对于通过include文件进来的外部全局变量也适用。

php中global也有这样的功能,它和$GLOBALS的区别在于:global在函数产生一个指向函数外部变量的别名变量,而不是真正的函数外部变量。$GLOBALS[]确确实实调用是外部的变量,函数内外会始终保持一致。

对于类中的成员变量,类中函数必须使用$this->的方式访问,不能用$GLOBALS方式:

global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。

二、实例讲解

<p>function t1(){</p>    global $var1,$var2;<br />    $var2=&$var1;<br />}<br />function t2(){<br />    $GLOBALS['var3']=&$GLOBALS['var1'];<br />}<br />$var1=5;<br />$var2=$var3=0;<br />t1();<br />print $var2."\n";<br />t2();<br /><p>print $var3."\n";</p>
Salin selepas log masuk

执行结果为:

0

5

为什么不是2个5而是1个0和1个5呢?

再修改一下例子:

<p>function t1(){</p>    global $var1;<br />    $var1=2;<br />    unset($var1);<br />}<br />function t2(){<br />    $GLOBALS['var1']=3;<br />    unset($GLOBALS['var1']);<br />}<br />$var1=1;<br />t1();<br />print $var1."\n";<br />t2();<br /><p>print $var1."\n";</p>
Salin selepas log masuk

执行结果只输入一个2;

1、$GLOBALS是由所有已定义全局变量自动形成的数组。变量名就是该数组的索引。即$GLOBALS['var1']与函数外部的变量$var1是同一个变量,所以将$GLOBALS['var1'] 删除后,该变量已不存在,所有无法输出了。

注:$GLOBALS是自动全局变量。这意味着它在所有的脚本中都有效。在函数或方法中不需要使用 global $GLOBALS;来访问它。

2、"global $var1;"是产生了函数外部$var1的别名变量"$var1",它不是真正的函数外部变量,他只存在于函数的内部,所以即使在函数内将别名变量删除也不会影响外面的变量,但是可以修改函数外部变量的值。

或许有的人总想知道这个或那个的区别:在php程序,包括其他程序的学习中,自己动手实验,根据结果加上的思考,有的时候比上网查找可能会来得更快一些,更准确一些。

下面我们来讲一下,php在全局范围内访问变量要怎么办?

例一:

global定义全局变量。

<p>function test_global(){</p>    global $var1;<br />    $var1='ok';<br />    unset($var1);<br />}<br />test_global();<br />$var2=&$var1;<br />unset($var1);<br /><p>echo $var2;</p>
Salin selepas log masuk

先不给出结果,自己运行一下程序。函数内部的变量可以访问到了。

从结果可以看出,unset只是断开变量名与变量值连接,并没有马上销毁变量的值,而且在函数内部定义的全局变量,实际在外部只是使用了函数内部的别名而已,所以我们在外面依然可以访问$var1。

例二:$GLOBALS在函数内部访问函数外面定义的变量。

<p>$waibu='out';</p>function ff(){<br />    echo $GLOBALS['waibu'];<br />}<br /><p>ff();</p>
Salin selepas log masuk

直接在函数内部使用$waibu是会出错的。


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Notis PHP: Pembolehubah tidak ditentukan:Penyelesaian Notis PHP: Pembolehubah tidak ditentukan:Penyelesaian Jun 25, 2023 pm 04:18 PM

Dalam pembangunan PHP, kita sering menemui mesej ralat PHPNotice:Undefinedvariable. Mesej ralat ini bermakna kami telah menggunakan pembolehubah yang tidak ditentukan dalam kod. Walaupun mesej ralat ini tidak akan menyebabkan kod ranap, ia akan menjejaskan kebolehbacaan dan kebolehselenggaraan kod. Di bawah, artikel ini akan memperkenalkan anda kepada beberapa kaedah untuk menyelesaikan ralat ini. 1. Gunakan fungsi error_reporting(E_ALL) semasa proses pembangunan Dalam pembangunan PHP, kita boleh

Notis PHP: Pembolehubah tidak ditentukan: arr dalam penyelesaian Notis PHP: Pembolehubah tidak ditentukan: arr dalam penyelesaian Jun 22, 2023 am 10:21 AM

Penyelesaian kepada PHPNotice:Undefinedvariable:arrin Dalam pengaturcaraan PHP, kita sering menemui mesej ralat "Notis:Undefinedvariable". Mesej ralat ini biasanya disebabkan oleh mengakses pembolehubah yang tidak ditentukan atau pembolehubah itu belum dimulakan. Untuk masalah ini, kita perlu mencari masalah dan menyelesaikannya dalam masa. Dalam artikel ini, kami akan menumpukan pada PHPNotice:Undefin

Cara menggunakan pembolehubah berangka dalam PHP Cara menggunakan pembolehubah berangka dalam PHP Sep 13, 2023 pm 12:46 PM

Cara menggunakan pembolehubah berangka dalam PHP Dalam PHP, pembolehubah berangka ialah jenis pembolehubah yang digunakan secara langsung tanpa pengisytiharan. Anda boleh menggunakan pembolehubah berangka untuk melakukan pengiraan matematik, perbandingan data dan operasi berangka lain. Artikel ini akan menerangkan cara menggunakan pembolehubah berangka dalam PHP dan memberikan contoh kod khusus. Mentakrifkan pembolehubah berangka Dalam PHP, mentakrifkan pembolehubah berangka adalah sangat mudah, hanya berikan nombor terus kepada pembolehubah. Berikut ialah contoh: $number=10; Dalam kod di atas, kami mentakrifkan nilai yang dipanggil $numb

Bagaimana dengan cepat menghapuskan ralat tidak ditentukan pembolehubah PHP? Bagaimana dengan cepat menghapuskan ralat tidak ditentukan pembolehubah PHP? Dec 17, 2023 am 10:23 AM

Bagaimana dengan cepat menghapuskan ralat tidak ditentukan pembolehubah PHP? Dalam pembangunan PHP, kita sering menghadapi ralat pembolehubah yang tidak ditentukan. Ini kerana pembolehubah yang tidak ditetapkan digunakan dalam kod. Apabila menghadapi ralat seperti ini, kita perlu cepat mencari punca ralat dan menyelesaikannya. Berikut ialah beberapa cara untuk menyelesaikan masalah pembolehubah PHP ralat tidak ditentukan dengan cepat untuk membantu anda mencari dan membetulkan ralat dengan lebih cepat. Hidupkan pelaporan ralat: Apabila kami menghidupkan pelaporan ralat, PHP akan memaparkan semua ralat dan mesej amaran, termasuk ralat tidak ditentukan yang berubah-ubah. Kita boleh melakukan ini dengan membuka kod

Notis PHP: Pembolehubah tidak ditentukan: penyelesaian sql Notis PHP: Pembolehubah tidak ditentukan: penyelesaian sql Jun 23, 2023 am 08:51 AM

Semasa membangunkan aplikasi PHP, jika anda menemui gesaan "Pembolehubah tidak ditentukan: sql", ini biasanya bermakna anda merujuk pembolehubah yang tidak ditentukan. Ini boleh disebabkan oleh banyak sebab, seperti salah ejaan nama pembolehubah, isu skop atau ralat sintaks dalam kod, dsb. Dalam artikel ini, kami akan meneroka pelbagai punca masalah ini dan menyediakan beberapa cara untuk menyelesaikannya. 1. Nama pembolehubah tersalah eja Dalam kod PHP anda, jika nama pembolehubah tidak betul atau salah eja, sistem

Penyelesaian kepada Notis PHP: Pembolehubah tidak ditentukan: hasil Penyelesaian kepada Notis PHP: Pembolehubah tidak ditentukan: hasil Jun 22, 2023 pm 01:32 PM

PHPNotice:Undefinedvariable:result bermaksud hasil pembolehubah yang tidak ditentukan dipanggil dalam program PHP, yang akan menyebabkan program menjana amaran peringkat Notis. Keadaan ini biasanya disebabkan oleh pengaturcara yang tidak mentakrifkan pembolehubah atau skop pembolehubah dengan betul semasa menulis kod PHP. Jika tidak diselesaikan tepat pada masanya, amaran tahap Notis ini boleh menyebabkan masalah dalam pengendalian program. Jadi, bagaimana untuk menyelesaikan PHPNotice:

Bagaimana untuk lulus pembolehubah PHP dengan rujukan Bagaimana untuk lulus pembolehubah PHP dengan rujukan Aug 26, 2023 am 09:01 AM

Dalam PHP, anda boleh menggunakan simbol ampersand (&) untuk menghantar pembolehubah melalui rujukan dan bukannya mengikut nilai. Ini membolehkan pembolehubah asal diubah suai dalam fungsi atau kaedah. Terdapat dua cara untuk menghantar pembolehubah PHP dengan rujukan: Menggunakan simbol ampersand Menggunakan simbol ampersand dalam fungsi/pengisytiharan kaedah Menggunakan simbol ampersand dalam pengisytiharan fungsi/kaedah Apabila menghantar pembolehubah kepada fungsi/kaedah Dalam PHP, anda boleh menggunakan fungsi/ Simbol ampersand ( &) dalam pengisytiharan kaedah melepasi pembolehubah melalui rujukan. Berikut ialah penjelasan yang dikemas kini: Untuk menghantar pembolehubah rujukan dengan menggunakan simbol & dalam pengisytiharan fungsi/kaedah, anda perlu memasukkan simbol & sebelum nama parameter dalam definisi fungsi/kaedah. Ini menunjukkan bahawa parameter harus diluluskan dengan rujukan, membenarkan

Apakah pembolehubah biasa dalam pengaturcaraan PHP? Apakah pembolehubah biasa dalam pengaturcaraan PHP? Jun 12, 2023 am 10:06 AM

Dalam pengaturcaraan PHP, pembolehubah adalah unit asas untuk menyimpan nilai dan digunakan untuk menyimpan dan menggunakan data semasa pelaksanaan program. Dalam PHP, pembolehubah boleh diberikan jenis data yang berbeza, termasuk integer, titik terapung, rentetan, tatasusunan, dll. Dalam artikel ini, kami akan memperkenalkan pembolehubah biasa dan penggunaannya dalam pengaturcaraan PHP. Pembolehubah mudah ialah jenis pembolehubah yang paling biasa Ia boleh menyimpan jenis data biasa seperti integer, nombor titik terapung dan rentetan. Dalam PHP, nilai awal pembolehubah tidak ditentukan ialah NULL. Berikut ialah beberapa contoh: Pembolehubah integer: $

See all articles