max*_*son 69 php variables scope global include
我正在尝试将变量从一个包含文件传递到另一个包含文件.除非我在第二个包含文件中将变量声明为全局变量,否则这不起作用.但是,我不需要在调用第一个include的文件中将其声明为全局.例如:
front.inc:
$name = 'james';
Run Code Online (Sandbox Code Playgroud)
index.php文件:
include('front.inc');
echo $name;
include('end.inc');
Run Code Online (Sandbox Code Playgroud)
输出:詹姆斯
end.inc:
echo $name;
Run Code Online (Sandbox Code Playgroud)
输出:没什么
如果我在end.inc中回显$ name之前声明全局$ name,那么它可以正常工作.这篇文章接受的答案解释了这取决于您的服务器配置:将PHP中的变量从一个文件传递到另一个文件
我正在使用Apache服务器.我如何配置它以便声明$ name是全局的?一个与另一个有优点/缺点吗?
Mic*_*yen 57
当在PHP中包含文件时,它就像存在于它们所包含的文件中的代码一样.想象一下,将每个包含文件中的代码直接复制并粘贴到您的文件中index.php.这就是PHP使用包含的方式.
所以,在你的榜样,因为你已经设置了一个名为变量$name在你的front.inc文件,然后既包括front.inc和end.inc你的index.php,你就可以echo变$name后的任何地方include的front.inc你内index.php.再次,PHP会处理您,index.php就像您包含的两个文件中的代码是文件的一部分一样.
当您echo在包含的文件中放置一个未在其自身内定义的变量时,您将不会得到结果,因为它与其他任何包含的文件分开处理.
换句话说,要执行您期望的行为,您需要将其定义为全局行为.
Kağ*_*yal 30
这是一个需要避免的陷阱.如果您需要在函数中访问变量$ name,则需要说"global $ name;" 在该功能的开头.您需要为同一文件中的每个函数重复此操作.
include('front.inc');
global $name;
function foo() {
echo $name;
}
function bar() {
echo $name;
}
foo();
bar();
Run Code Online (Sandbox Code Playgroud)
只会显示错误.正确的方法是:
include('front.inc');
function foo() {
global $name;
echo $name;
}
function bar() {
global $name;
echo $name;
}
foo();
bar();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
165294 次 |
| 最近记录: |