Php 可变范围和包括
我有以下问题:在index.php中,我设置了变量$activelang。我Php 可变范围和包括,php,wordpress,Php,Wordpress,我有以下问题:在index.php中,我设置了变量$activelang。我 $activelang = active_language (); echo $activelang; //works perfectly 在后面的index.php代码中,我包含了一个新的php文件 include ('myotherfile.php'); 如果我尝试在myotherfile.php中使用$activelang,它就不起作用了!我没有在函数中使用它,我尝试使用全局$activelang,但它也
$activelang = active_language ();
echo $activelang; //works perfectly
在后面的index.php代码中,我包含了一个新的php文件
include ('myotherfile.php');
如果我尝试在myotherfile.php中使用$activelang,它就不起作用了!我没有在函数中使用它,我尝试使用全局$activelang,但它也不起作用
所有这些都发生在wordpress安装中,但我所说的代码是纯php。我使用的是PHP5.3
为什么会这样?据我所知,include在我的主文件中起到复制粘贴的作用,因此我不应该在变量范围方面有任何问题,对吗?include应该用于包含文件,而不是一些网络资源
如果你费心运行你在这里发布的代码,你会大吃一惊,因为它可以打印$activelang。使用WordPress模板时,你应该在functions.php文件中创建函数来处理includes,然后在模板中调用这些函数 因此,在functions.php中,您应该具有:
function myOtherFile() {
include('myotherfile.php');
}
在index.php中调用myOtherFile()
现在,如果您在范围方面仍有问题,请尝试以下方法:
function myOtherFile($activelang) {
include('myotherfile.php);
}
然后在index.php中执行以下操作:
$activelang = active_language();
myOtherFile($activelang);
如果这不起作用,那么我认为你的问题是由其他地方引起的。因为正如斯帕奈尔上校所说,你在这里发布的代码是有效的。在这里发布你的真实代码。你不把这个文件作为HTTP资源包括进来吗?问题是你执行的上下文。我不太了解WP安装,但它很可能在本地范围中包含您的第一个脚本。所以$activelang从来不是一个全球性的。对不起,我不知道你在说什么。网络资源?我包括一个php文件,其他文件也使用它。运行我在这里发布的代码是什么意思?@0al0用你提到的普通PHP测试你的代码,你就会明白我在说什么。