PHP函数不回显变量

时间:2014-04-21 21:19:11

标签: php function variables echo

我在名为config.php的文件中有以下行:

$objects["settings"]["template"]["value"] = "yes";

然后是一个名为funcs.php的文件,其中包含config.php,包含以下行。

echo $objects["settings"]["template"]["value"];
function testfunction() {
    echo "<br />function output: ".$objects["settings"]["template"]["value"];
}

然后我有index.php,其中包括funcs.php,如下所示。

require_once("funcs.php");
testfunction();

为什么函数的输出没有读取变量并且它们是空的?

yes
function output:

我期待的输出是:

yes
function output: yes

提前致谢。

编辑:我选择了Yoda的答案,因为这是关于将$对象作为参数传递的最详细答案。感谢所有回答的人!

4 个答案:

答案 0 :(得分:2)

只需将对象作为参数

传递
function testfunction($objects) {
    echo "<br />function output: ".$objects["settings"]["template"]["value"];
}

答案 1 :(得分:1)

变量超出了函数的范围。要使函数中的变量可用,您必须传递一个参数到函数中。您还需要修改函数定义。见下面的示例

// function definition
function testFunction($variable) {
    echo $variable;
}

// call the function
$your_variable = "Some output";
testFunction($your_variable);

这应该会给你预期的行为。

答案 2 :(得分:1)

变量不在函数范围内。您可以使用global关键字来实现这一目标。但是这样做是不好的做法,你应该通过函数参数将值传递给函数。

使用global(不良做法):

$objects["settings"]["template"]["value"] = "yes";

function testfunction() {
    global $objects;        
    echo "<br />function output: ".$objects["settings"]["template"]["value"];
}

testfunction();

通过函数参数传递值:

$objects["settings"]["template"]["value"] = "yes";

function testfunction($objects) {   
    echo "<br />function output: ".$objects["settings"]["template"]["value"];
}

testfunction($objects);

答案 3 :(得分:-1)

使用全局可以工作,但只有在你不能通过函数传递变量时才应该使用它,因为它有一些安全风险......

$GLOBALS["settings"]["template"]["value"] = 'yes';

这是有效的,因为它将变量的范围更改为全局。

$GLOBALS["settings"]["template"]["value"] = 'yes';

function test(){

    echo $GLOBALS["settings"]["template"]["value"];

}

test();

以上打印出yes