在php中更改全局变量值

时间:2016-12-12 17:18:15

标签: php variables global

我正在学习php,我只是对w3schools的一些教学感到困惑!

<?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”变量是全局变量还是新变量?!

2 个答案:

答案 0 :(得分:2)

$y生成的全局$y$y = $x + $y是同一个变量。 global没有定义不同的变量,它定义了&#39;范围&#39;变量,即在脚本中可以访问的位置。所以$y = $x + $y会改变全局变量的值。

例如,如果您重写了这样的函数:

function myTest() {
    $x, $y;
}

$x$y与先前定义的变量不同,因为您没有将它们定义为全局变量。

答案 1 :(得分:1)

$ymyTest()函数中的全局函数,如您所声明的那样:

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
}