PHP:全局变量未在函数内被拾取

时间:2013-11-29 13:12:07

标签: php variables global-variables

这让我大吃一惊......

我有一个独立的PHP文件,以及一个带有全局变量的简单函数。

<?php
    $var = 4;

    function echoVar()
    {
        echo $var; 
    }

    echoVar();
?>

当我致电echoVar()时,不会返回任何内容...但是,如果我将$var放在函数内,它将返回4.

这里发生了什么?在这种情况下,$var不应该是全球性的吗?

5 个答案:

答案 0 :(得分:5)

如果在函数外部设置变量,则在该函数内部不可见。要访问它,您必须使用global关键字将其声明为全局。这称为范围

<?php

$var = 4;

function echoVar() {
    global $var;

    echo $var;
}

echoVar();

注意:这通常被视为不良做法。请阅读this以获取更多信息。

一个好的选择是将变量作为参数传递:

<?php

$var = 4;

function echoVar($var) {
    echo $var;
}

echoVar($var);

答案 1 :(得分:3)

这里有很多选择......比如

<?php
    $var = 4;

    function echoVar($var)
    {
        echo $var; 
    }

    echoVar($var);
?>

<?php
    $var = 4;

    function echoVar()
    {
        global $var;
        echo $var; 
    }

    echoVar();
?>

答案 2 :(得分:0)

您可以将$ var作为参数,如下所示:

$ var = 4;

function echoVar($var)
{
    echo $var; 
}

echoVar($var);

或使用global,如下所示:

$var = 4;

function echoVar()
{

    global $var;
    echo $var; 
}

echoVar();

答案 3 :(得分:0)

当你调用任何函数时,它会创建局部变量,所以你必须在调用函数部分时传递参数。

    $var = 4;

    function echoVar($var)
    {
        echo $var; 
    }

    echoVar($var);

答案 4 :(得分:0)

只是澄清一下,因为每个人似乎都在发布垃圾。

  • 请勿使用global $var;
  • 不要在函数内部回显
  • 在回显
  • 之前,不需要将函数的输出分配给变量

这是“应该”完成的方式。

<?php
    $var = 4;  //set initial input var this is external to the function

    function echoVar($internalvar) {  /*notice were accepting $var as $internalvar I'm doing this to clarify the different variables so you don't end up getting confused with scope  $internalvar is local to the function only and not accessible externally*/
        return $internalvar; //now we pass the function internal var back out to the main code we do this with return you should never echo out your output inside the function
    }

    echo echoVar($var);  //call function and pass $var in as an arguement
?>