我是php的新手,所以我对$ _GLOBALS了解不多。我希望这些用于在任何地方访问全局变量。所以,我的问题是函数addition()
内部的问题是什么,为什么我不能这样做?我不能直接为变量z赋值。
<?php
$x = 75;
$y = 25;
function addition () {
$z = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>
我收到以下错误:
Notice: Undefined variable: z in C:\xampp\htdocs\php\first.php on line 14
是echo $z;
答案 0 :(得分:0)
如果您从编程开始,我强烈建议您不要使用GLOBALS。 获取对象/变量的方法比全局变量更好。例如dependency injection
函数是什么使得参数对它们起作用并返回值。所以你可以创建添加功能
function addition ($x, $y) {
return $x + $y;
}
调用时,它将返回$ x和$ y的总和。如果您有此值,则可以使用echo
echo addition(5, 4);
或
$z = addition(5, 4);
echo $z;
在您的情况下,您会收到通知,因为您想要获取未设置的变量。您可以检查变量是否设置了函数isset($variable)
如果您仍想使用$ _GLOBALS,那么您需要知道$ _GLOBALS是什么。它是全局范围内所有变量的参考,所以要使它工作,你应该编写像
这样的东西$x = 5;
$y = 7;
function addition() {
return $GLOBALS['x'] + $GLOBALS['y'];
}
echo addition();
但这是不好的方法,我最好不要这样做。
修改强>
同时检查this link
答案 1 :(得分:0)
$ GLOBALS是一个超全局变量,用于根据其范围访问所有已定义的变量。 在上面的场景中,$ z是在函数内定义的变量,因此其范围仅限于函数。 为了使它可以全局访问,它应该在函数体外声明,并且应该在函数体中声明为全局变量。
示例强>
$z=0;$x=20;$y=30;
function addition() {
global $z;
$z = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;