【问题标题】:PHP include var from file in a file that is then included in other filesPHP将文件中的var包含在一个文件中,然后包含在其他文件中
【发布时间】:2016-03-20 06:05:08
【问题描述】:

我有一个由几个不同的 php 文件(页眉、页脚、主文件等)构成的博客。我想创建一个名为 adv.php 的 PHP 文件,其中包含一个需要在所有其他 PHP 文件中检索的 var。我想只在 header.php 中包含 adv.php 文件,并确保 var 在 footer.php、main.php 等中仍然有效。

我尝试过,即使使用全局变量,这似乎也不起作用。我怎样才能解决这个问题?同样,我只想在 header.php 中包含一次 adv.php 文件,而不是在每个 php 文件中。

编辑

这是代码的简化版本,仅包含相关部分:

adv.php

<?php $ad300_top_right_index = "RTB"; ?>

header.php

<?php include_once('adv.php');  ?>

main.php

<?php if  ( $ad300_top_right_index == "RTB" ) { ?>

show code here

<?php } else { ?>

show some other code here

<?php } ?>

关于包含:它是一个 Wordpress 模板,其中生成的页面将包含 header.php 和 main.php,而 header.php 包含 adv.php。在我尝试使用 main.php 中的 var 之前,当然会包含 adv.php。

【问题讨论】:

  • 您是否在包含包含它的文件后检索 var?
  • include/require 就像被包含文件的内容被剪切并粘贴到 include 指令所在的位置一样。就后面的代码而言,包含文件和将其作为主文件本身的一部分没有区别。你只需要知道 PHP 的作用域规则。
  • 您是否尝试在其他包含的脚本之一的函数中使用此变量Variable Scope in the manual
  • 是的,var 是在 include 之后调用的(这就是我选择在 header 中添加 include 的原因)。
  • @MarcB 但它似乎不起作用...... adv.php 包含在 header.php 中。在 header.php 中调用 var 可以工作,但如果我从另一个文件(例如 footer.php)调用它,它将无法工作。是在需要调用 var 的每个文件中添加包含字符串的唯一解决方案吗?

标签: php include global var


【解决方案1】:

您没有显示任何代码,但没有理由让一个文件中包含的 var 在另一个文件中不可见:

一个.php

<?php
$x = 7;

b.php

<?php
echo $x, "\n";

z.php

<?php
echo "#1 - startup\n";
echo $x, "\n";

echo "#2 - including a\n";
include('a.php');

echo "#3 - included\n";
echo $x, "\n";

echo "#4 - including b\n";
include('b.php');

echo "#5 - included\n";

运行z.php的输出:

#1 - startup
PHP Notice:  Undefined variable: x in /home/marc/z.php on line 3

#2 - including a
#3 - included
7
#4 - including b
7
#5 - included

请注意,7 按预期输出。

如果你没有得到你的 var,那么除了 php 之外还有其他的东西导致了问题,例如不了解范围规则。

【讨论】:

  • 谢谢!我在原始问题中添加了相关代码。我可能遗漏了一些东西(我真的不是 PHP 专家)。问题是否可能是我没有回显 var,而只是将其用作隐藏字符串来存储我随后在条件中使用的内容?
  • 不是真的,但它是 wordpress。您确定您的 include() 正在顶级范围内执行吗?您可能必须声明 var global
猜你喜欢
  • 2021-11-09
  • 1970-01-01
  • 1970-01-01
  • 2018-05-22
  • 2013-04-13
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
相关资源
最近更新 更多