在php

时间:2015-07-01 11:15:09

标签: php superglobals

我是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;

2 个答案:

答案 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;