使用包含文件中的变量回显变量

echo variable with variable from included file

所以基本上我无法完成的是回显一个变量,该变量包含包含文件中的变量。

解释:

我有 3 个文件:

index.php
system/functions.php
system/config.php

每个文件都包含另一个文件,因此它们像一个文件一样工作(索引除外)

system/functions.php 包含:

include_once $_SERVER['DOCUMENT_ROOT'].'/system/config.php';
include_once $_SERVER['DOCUMENT_ROOT'].'/system/connection.php';

system/config.php 包含:

include_once $_SERVER['DOCUMENT_ROOT'].'/system/functions.php';
include_once $_SERVER['DOCUMENT_ROOT'].'/system/connection.php';

没有问题,他们一起工作没有问题,他们可以成功地在他们之间传递变量。 但是

当我想:

echo $message;

index.php上,输出的只是来自变量的字符串,跳过包含文件中的其他变量...

在这种情况下,functions.php 文件包含

$message = $varfromconfig."Some String";

其中 config.php 包含

$varfromconfig = "someword ";

当我将 $message 回显到 index 页面时,只有 string Some String 是 returned,没有配置变量...为什么? (应该returnsomeword Some String)

谢谢。

当然,index.php 包含配置和功能...

include_once 'system/config.php';
include_once 'system/connection.php';
include_once 'system/functions.php';

在 index.php 执行此操作:

//include_once 'system/config.php'; remove this include from index.php
include_once 'system/connection.php';
include_once 'system/functions.php';

,这样做:

include_once 'system/config.php'; remove this include from index.php
include_once 'system/connection.php';
include 'system/functions.php'; //not include_once

当你同时插入两者时,你有一个循环。我想你 config.phpfunctions.php 之间的关系可能比你在这里写的更复杂,所以我会尝试详细说明发生了什么,以便您可以在需要时找到其他解决方案。

在你 运行 index.php 之后,它需要 config.php。然后,在 config.php 内,会发生这种情况:

config.php 插入 functions.php,然后 functions.php插入config.phpconfig.php插入funtions.php 再次,这将永远保留。所以 php 解释器只是在它发生之前打破循环并只从 config.php 中导入 functions.php,但不要从 functions.php 内部导入 config.phpconfig.php。 (该死的开始)

所以现在我们刚刚通过了 index.php 的第 1 行,并且首先从 config.php 导入了 [= =37=]index.php 然后 functions.php 来自 config.php。解释器首先红色 functions.php,加载它的变量,然后去 config.php 加载它的变量。

因此,首先从functions.php,它运行s $message = $varfromconfig."Some String";。一旦 config.php 还没有被解释并且 $varfromconfig 仍然是空的,它将 "Some String" 分配给 $message。然后它 运行s $varfromconfig = "someword ";,但没有分配给 $message,因为 $message 分配已经完成。

在第二行,导入了connections.php,然后在第三行尝试导入functions.php,但是functions.php 已经插入。所以include_once不要让它被导入。

为了解决这个问题,一旦functions.php中的变量需要config.php到运行首先,您只需在 index.php 调用 functions.php 并让 functions.php 自己调用 config.php。另一种解决方案是使用include而不是include_once插入functions.php并让它被解释两次。