为什么我可以访问函数之外但不在函数内的变量?

时间:2013-01-16 05:51:45

标签: php

我有一堆HTML和PHP代码,在模板文件中它运行正常,但我正在尝试将它放在PHP函数中,现在当我运行页面时,我收到错误Undefined variable: variableName

以下是一些代码:

function testFunction()
{
    foreach ($variableName as $variable):
        echo 'tasf';
    endforeach;
}

在该函数$variableName内部找不到但如果我将它移到函数外部就可以找到它。如果重要的话,我在symfony php模板文件中这样做。

4 个答案:

答案 0 :(得分:3)

变量范围的简单问题。如果在函数外部定义了该变量,则需要将其传递给那里或将其声明为全局

See Manual Here

答案 1 :(得分:3)

PHP Variable Scope

$str = 'Hello World';
echo $str; // works fine

function foo($bar){
    echo $bar; // passed as function argument. works fine
}

foo($str);

function bar(){
    global $str;
    echo $str; // passed from global. works fine
}

答案 2 :(得分:1)

函数作用域意味着在函数内引用的变量必须在其中声明或传递...

function testFunction($variableName)
{
    foreach ($variableName as $variable):
        echo 'tasf';
    endforeach;
}

这是a link to the PHP manual on Variable Scope

在任何情况下都不应该使用global个变量。总有一种更好的方法,这样做被认为是不好的做法。它使您的代码难以理解,因为这意味着其他人可能必须阅读所有以了解正在发生的事情。

答案 3 :(得分:0)

您需要使用global关键字来实现此目标。

global应该谨慎使用,并且可能会产生意想不到的副作用。