我已经编写了这段代码,我明白了它的第一个功能。我在看w3schools的屏幕截图时正在练习。
我只要求对第二和第三个功能进行一些清晰的解释。
我已经根据代码及其结果中的差异编辑了代码。
<?php
$x = 5;
$y = 10;
function myTest1(){
global $x, $y;
$y = $x + $y;
echo "test1 value using GLOBAL keyword INSIDE function is : $y <br>";
}
myTest1();
echo "test1 value using GLOBAL keyword OUTSIDE function is : $y <br><br>";
?>
<?php
$x = 5;
$y = 10;
function myTest2(){
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
echo "test2 value using NO GLOBAL with GLOBALS[variable/index] keyword INSIDE function is nothing : $y <br>";
}
myTest2();
echo "test2 value using NO GLOBAL with GLOBALS[variable/index] keyword INSIDE function is : $y <br><br>";
?>
<?php
$x = 5;
$y = 10;
function myTest3(){
global $x, $y;
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
echo "test3 value using GLOBAL with GLOBALS[variable/index] keyword INSIDE function is : $y <br>";
}
myTest3();
echo "test3 value using NO GLOBAL with GLOBALS[variable/index] keyword INSIDE function is : $y <br>";
?>
答案 0 :(得分:3)
myTest1()
和myTest2()
的工作原理相同,因为声明global $x, $y;
表示函数内的变量$x
和$y
引用了全局变量,与$GLOBALS['x']
和$GLOBALS['y']
相同。
但是myTest2()
没有global
声明。当它分配给$GLOBALS['y']
时,这将更新全局变量$y
,但不会更新具有相同名称的局部变量。然后,它回显$y
,而不是$GLOBALS['y']
。由于尚未分配局部变量$y
,因此不会显示任何内容。
如果启用error_reporting(E_ALL);
,则会收到来自myTest2()
的警告:
注意:未定义的变量:第20行上filename.php中的y