索引中指定的变量不能与include()文件一起使用

时间:2017-05-06 19:33:08

标签: php

我试图创建一个简单的系统,允许通过名为$ pagetitle的变量控制页面的标题。在这个例子中,我在index.php中指定变量,然后我尝试在名为make_header.php的包含文件中使用该变量。我没有成功地让make_header.php识别变量。根据我的理解,包含文件应该能够识别变量,因为我在使用include()之前创建了它,但在这种情况下似乎不是这种情况。有谁知道为什么会出现这个问题以及如何使变量在这两个文件之间起作用?

的index.php

<?php
$pagetitle = "Home";
include('make_header.php');
makeHeader();
?>

make_header.php

<?php
function makeHeader() {
echo '<title>'. $pagetitle .'</title>';
}
?>

*请注意,makeHeader()函数中有更多内容可以正常运行并创建徽标等,但我在此省略了它,因为它不会对此特定问题产生任何影响。< / p>

更新

以下是完整的makeHeader()函数。虽然我不相信其中的其他信息会导致问题,但检查不会有什么坏处。

<?php
function makeHeader() {
echo '<title>'. $pagetitle .'</title>';
echo '<img id="logo" src="pictures/logo.png" align="left" width="842" height="182" alt="Logo"/>';
echo '<br />';
echo '<div id="time">The current time is ' . date("h:i") .  date("Y/m/d");
echo '</div>';
}
?>

1 个答案:

答案 0 :(得分:2)

这是因为在$pagetitle函数中,它试图找到名为$pagetitle局部变量,而不是全局变量< / strong>名为$pagetitle = "Home";。这就是为什么该功能无法考虑$pagetitle的原因。

所以解决方法是,在函数中创建global变量function makeHeader() { global $pagetitle; echo '<title>'. $pagetitle .'</title>'; } ,或者将其显式传递给函数。

方式(1):

function makeHeader($pagetitle) {
    echo '<title>'. $pagetitle .'</title>';
}

makeHeader("Home");

方式(2):

global

旁注:由于@JohnConde提到the comment below,在代码中使用if _fetchedResultsController != nil { return _fetchedResultsController! } 是一种糟糕的编程习惯。这是why Globals are evil的好读。