Home  >  Article  >  Backend Development  >  global &一直没明白是如何个工作原理

global &一直没明白是如何个工作原理

WBOY
WBOYOriginal
2016-06-13 12:52:58838browse

global &一直没明白是怎么个工作原理

<br />
$var1 = 1;<br />
$var2 = 2;<br />
function test(){<br />
global $var1,$var2; // <br />
$var1 = 3;//$var1 重新赋值  又没有return<br />
}<br />
test();<br />
echo $var1;  //为什么是3<br />

<br />
$var1 = 1;<br />
$var2 = 2;<br />
function test(){<br />
global $var1,$var2;<br />
$var1 = &var2;<br />
}<br />
test();<br />
echo $var1 //1   想不通<br />

<br />
$var1 = 1;    <br />
$var2 = 2;    <br />
function test_global()    <br />
{    <br />
    global $var1,$var2;    <br />
    $var1=&$var2;    <br />
    $var1=7;    <br />
}<br />
test_global();    <br />
echo $var1;    <br />
echo $var2;//结果是1和7<br />


------解决方案--------------------
楼主的三个函数,均没有传递参数进去。
global的作用就在此。
当你不传参数进去,又要用到这个变量的时候。global一下
------解决方案--------------------
谢谢。请再讲下“&”的作用 $var1 = &var2 究竟如何理解?
------解决方案--------------------
$var1 = 1;
$var2 = 2;
function test(){
global $var1,$var2;
$var1 = &var2;
}
test();
echo $var1 //1   想不通
先给你解释这个: test()函数中的$var1 = &var2; 这个$var1只是函数内的局部变量,它并不属于全局变量。如果在test()中打印$var1会得到结果$var1 = 2;
------解决方案--------------------
$var1 = 1;    
$var2 = 2;    
function test_global()    
{    
    global $var1,$var2;    
    $var1=&$var2;    
    $var1=7;    
}
test_global();    
echo $var1;    
echo $var2;//结果是1和7

我们在来看这个,同理,$var1仍然为局部变量。但是在test()中$var1=&$var2; 这句代码的意思是把$var1的值 指向了$var2的指针所对应的内存地址(记作AA)。这个时候$var1=7,也就是说把AA变为了7。
PHP 的引用,希望能帮助你理解。
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article: 求好手写一段正则 Next article: PHP低级试题二