PHP全局变量:global与$GLOBALS的差异和运用ITeye - 凯发娱乐

PHP全局变量:global与$GLOBALS的差异和运用ITeye

2019-01-10 15:14:23 | 作者: 昆宇 | 标签: 变量,运用,函数 | 浏览: 192

   (1)global是起传递参数的效果,而并非使变量的效果域为大局。

            global的正确用法是:"在一个函数中引进外部的一个变量,假如该变量没有经过参数传递进来,那么就经过global引进进来。" 也就是说,当一个函数引证一个外部变量时,能够在函数内经过global来声明该变量,这样该变量就能够在函数中运用了(相当于当作参数传递进来,并不是变为大局变量)

   (2)$GLOBALS[var]是外部的大局变量自身。而global $var是外部$var的同名引证或许指针。

 

 

【详解】

1. 有些场合需求大局变量的呈现,如下比如:

 ?php 
$name="why";//界说变量name,并初始化 
function echoName() { 
//妄图引证函数外面的变量 
echo "myname is ".$name." br 
echoName(); 
? 

  上面的代码的成果为:"myname is" 。而不是希望中的:"myname is why"。由于函数没有传递参数$name的值,妄图引证外部变量,不会成功。这时候考虑运用global

 

2. 所以将上述代码改为

 

 ?php 
global $name="why";//用global声明的一起赋值 
function echoName() { 
//妄图引证函数外面的变量 
echo "myname is ".$name." br 
echoName(); 
? 

 

   成果为:Parse error: syntax error, unexpected =, expecting , or ; in http:\\xxxxxxx.com on line 2

也即上述代码有过错。原因是不能在用global声明变量的一起给变量赋值

 

3. 再次更改上述代码:

 

 ?php 
global $name; 
$name="why";//将global声明与赋值分隔 
function echoName() { 
//妄图引证函数外面的变量 
echo "myname is ".$name." br 
echoName(); 
? 

 

   可是得到的成果仍然为:"myname is" ,原因是global的用法不对。

   global的正确用法是:"在一个函数中引进外部的一个变量,假如该变量没有经过参数传递进来,那么就经过global引进进来。" 也就是说,当一个函数引证一个外部变量时,能够在函数内经过global来声明该变量,这样该变量就能够在函数中运用了(相当于当作参数传递进来)。

 

4.所以进一步改动上述代码:

 

 ?php 
$name="why";//界说变量name,并初始化 
function echoName() { 
//经过global来声明$name,相当于传递参数 
global $name; 
echo "myname is ".$name." br 
echoName(); 
? 

 

   此刻得到希望中的成果:"myname is why"。

   以上代码阐明,global是起传递参数的效果,而并非使变量的效果域为大局。

 

5. 以下代码证明了这一点:

 ?php 
$name="why";//声明变量$name,并初始化 
function echoName1() { 
//在函数echoName1()里运用global来声明$name 
global $name; 
echo "the first name is ".$name." br 
function echoName2() { 
//在函数echoName2()里没有运用global来声明$name 
echo "the second name is ".$name." br 
echoName1(); 
echoName2(); 
? 

   成果为:

   the first name is why

   the second name is

 

   上面的成果阐明在函数echoName2()中,$name变量仍然是不知道的,由于没有用global来声明,也就没有传递进去。一起也证明了global的效果并不是使变量的效果域为大局。

 

   当然,除了经过上述方法外,还能够运用大局数组$GLOBALS来解决问题,在需求用到外部变量的当地,运用$GLOBALS[var]就能够了。例:

 ?php 
$name="why";//界说变量name,并初始化 
function echoName() { 
//经过大局数组$GLOBALS来引证外部变量 
echo "myname is ".$GLOBALS[name]." br 
echoName(); 
? 

得到的成果为:   myname is why 

 

【总结】

   综上,global的效果就相当于传递参数,在函数外部声明的变量,假如在函数内想要运用,就用global来声明该变量,这样就相当于把该变量传递进来了,就能够引证该变量了。

 

 

 

 

 

 

 

 

 

 

 

 

.

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章