2014-08-27 40 views
-1

我有两个文件在页面上加载(body.php和footer.php)。跨越.php文件的PHP全局变量

在身,我有:

<?php global $pageName = "foo";?> 

在页脚我有:

<?php echo $pageName;?> 

但是,它呼应的出什么。我错过了什么吗?

+2

这里不需要'global'关键字,变量已经在全局范围内定义了。你是否包含页脚页面? – andrew 2014-08-27 12:19:36

回答

1

您不必定义全局变量作为一个全球性的。 您可以使用这段代码在你的身体:

<?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 
?> 

快乐编码!

+0

谢谢。我的问题可能不清楚 - 但这是我所瞄准的行为,并且工作完美。 – user1149620 2014-08-28 11:50:28

1

全局范围只针对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']; 
?> 
+0

谢谢,但这加载了整个footer.php页面(我稍后加载)。有没有办法让变量通过? – user1149620 2014-08-27 12:24:37

+0

@ user1149620你在不同的时间加载页脚页面!?那么有道理,那么为什么它不工作。做谷歌搜索如何使用'$ _SESSION' – andrew 2014-08-27 12:30:09

+0

@ user1149620你是否将footer.php包含在body.php中? – KhorneHoly 2014-08-27 12:33:39