在我的 main.php 文件中,我准备了一组值。 我提取'那个数组,之前包括'另一个文件( template.php )。 数组的所有键都可以在template.php中作为变量(thx to' extract' function), 但是,当在 template.php 中定义的函数中使用它们时,变量对于范围是不可见的,而是我得到了“未初始化的值”'错误。
我认为这是因为范围可变,但是全球性的'关键字没有解决问题。
这是代码的简短版本。
// main.php
$array = ["page" => "my current page"];
extract($array);
include('template.php');
// template.php
<?php
function foo(){
// global $page; // putting 'global' didn't make it work
print $page; // uninitialized variable;
}
print $page; // work OK - print $page value
foo();
?>
THX
答案 0 :(得分:1)
您可以简单地修改foo()
方法来接受变量,而不是尝试使用全局变量(这不是一个好主意)。
<强> Main.php 强>
<?php
$array = array("page" => "my current page");
extract($array);
include('template.php');
?>
Template.php
<?php
function foo($page)
{
print 'The page is: ' . $page;
}
foo($page);
?>
您的函数无法访问提取的变量,但可以将它们作为常规参数发送。 (如果您在适当的范围内使用它们,请提供。)
答案 1 :(得分:0)
// main.php
$array = ["page" => "my current page"];
createVars($array);
function createVars($data) {
foreach($data as $key => $val) {
global ${$key};
${$key} = $val;
}
}
include ('template.php');
// template.php
function foo(){
global $page;
print $page;
}
foo();
// you should now be able to access $page inside of foo();