我有以下程序结构:
Root directory:-----index.php
|-------TPL directory
|-------------header.php
|-------------index.php
|-------------footer.php
php file loading structure:
Root directory:index.php ----require/include--->tpl:index.php
|----require/include-->header.php
|----require/include-->footer.php
Root index.php:
<?php
function get_header(){
require('./tpl/header.php');
}
function get_footer(){
require('./tpl/footer.php');
}
$a = "I am a variable";
需要(&#39; ./ TPL / index.php的&#39);
TPL:index.php的:
<?php
get_header();//when I change require('./tpl/header.php'); variable $a can work!!
echo '<br />';
echo 'I am tpl index.php';
echo $a;
echo '<br />';
get_footer();//when I change require('./tpl/footer.php'); variable $a can work!!
TPL:header.php文件:
<?php
echo 'I am header.php';
echo $a;//can not echo $a variable
echo '<br/>';
TPL:footer.php:
<?php
echo '<br />';
echo $a;//can not echo $a variable
echo 'I am footer';
出于某种原因,当我使用函数来要求header.php和footer.php时,我的变量$ a不会被回显。如果我自己使用header.php或footer.php,它工作正常。我不明白问题是什么。您认为这里的问题是什么?
答案 0 :(得分:4)
您的问题可能只是函数的范围不会自动包含全局变量。尝试将$a
设置为全局,例如global $a;
,例如下面的get_header()
功能:
function get_header(){
global $a; // Sets $a to global scope
require('./tpl/header.php');
}
答案 1 :(得分:1)
在函数内部使用include包含直接在该函数中的代码。因此,变量是该函数可访问变量的局部变量 - 它不在函数外部设置。
如果你需要/包含没有函数$ a成为全局变量。
答案 2 :(得分:0)
将您的变量设为全局
全球$ YourVar;