我有两个文件在页面上加载(body.php和footer.php)。跨越.php文件的PHP全局变量
在身,我有:
<?php global $pageName = "foo";?>
在页脚我有:
<?php echo $pageName;?>
但是,它呼应的出什么。我错过了什么吗?
我有两个文件在页面上加载(body.php和footer.php)。跨越.php文件的PHP全局变量
在身,我有:
<?php global $pageName = "foo";?>
在页脚我有:
<?php echo $pageName;?>
但是,它呼应的出什么。我错过了什么吗?
您不必定义全局变量作为一个全球性的。 您可以使用这段代码在你的身体:
<?php $pageName = 'foo'?>
而这段代码在你的页脚:
<?php global $pageName; echo $pageName //$pageName from body.php ?>
另一种方法是创建你把你的数据文件page.php文件像这样:
<?php
// (Inside page.php)
$pageName = 'foo';
require('header.php'); // Use $pageName in header.php without global
require('body.php'); // Use $pageName in body.php without global
require('footer.php'); // Use $pageName in footer.php without global
?>
快乐编码!
谢谢。我的问题可能不清楚 - 但这是我所瞄准的行为,并且工作完美。 – user1149620 2014-08-28 11:50:28
全局范围只针对varibale所在的文件。您可以做的是includefooter.php
,那么您的代码将工作。
body.php:
<?php $pageName = "foo"; //No need for the global, the varibale is already in the global scope
include 'footer.php';
?>
将在年底回声出 “富”。
In the official documentation you can read about variable scoping
根据评论
编辑您可以设置变量设置为Session。
所以你body.php会是什么样子:
<?php
session_start(); //IMPORTANT, this must be the first action you do.
$pageName = "foo"; //No need for the global, the varibale is already in the global scope
$_SESSION['pageName'] = $pageName;
?>
你footer.php:
<?php
session_start(); //IMPORTANT, this must be the first action you do.
echo $_SESSION['pageName'];
?>
谢谢,但这加载了整个footer.php页面(我稍后加载)。有没有办法让变量通过? – user1149620 2014-08-27 12:24:37
@ user1149620你在不同的时间加载页脚页面!?那么有道理,那么为什么它不工作。做谷歌搜索如何使用'$ _SESSION' – andrew 2014-08-27 12:30:09
@ user1149620你是否将footer.php包含在body.php中? – KhorneHoly 2014-08-27 12:33:39
这里不需要'global'关键字,变量已经在全局范围内定义了。你是否包含页脚页面? – andrew 2014-08-27 12:19:36