<?php
$x = 5;
$y = 10;
function myTest() {
global $x, $y;
$y = $x + $y;
}
myTest();
echo $y; // outputs 15
?>
在这段代码中它说输出为15,因为我们在myTest函数中得到了“y”变量值!但php如何知道$y = $x + $y;
中的“y”变量是全局变量还是新变量?!
答案 0 :(得分:2)
$y
生成的全局$y
和$y = $x + $y
是同一个变量。 global
没有定义不同的变量,它定义了&#39;范围&#39;变量,即在脚本中可以访问的位置。所以$y = $x + $y
会改变全局变量的值。
例如,如果您重写了这样的函数:
function myTest() {
$x, $y;
}
$x
和$y
与先前定义的变量不同,因为您没有将它们定义为全局变量。
答案 1 :(得分:1)
$y
是myTest()
函数中的全局函数,如您所声明的那样:
global $x, $y;
所以在myTest()
内:
global $x, $y;//$x=5 and $y=10
$y = $x+$y; // value of $y will be over written by (10+5) and it will become 15
更清楚你的困惑:
function myTest() {
$y = 200; //local $y
echo $y; //200
global $x, $y;//now global $y will overwrite local $y
$y = $x + $y;
echo $y; //15
}