如何将INCLUDE放入包含foreach条件的变量

时间:2016-09-15 19:38:22

标签: php variables foreach include

我在表中包含多个ID的列。我可以使用每个id来定义文件的路径,即列内容=“1000 20201”可以定义为可变路径,如此...

/1/1000/content-1000.html
/20/20201/content-20201.html

我编写了以下几乎可以使用的代码

$fids = $mcat['mcat_fmemids'];

$fidsarr = explode(' ', $fids);
foreach ($fidsarr as $fid) {
$fincl .= include "../content/".substr($fid, 0, -3)."/".$fid."/content-".$fid.".html";
}

echo "html code that goes above my variable";
echo $fincl;
echo "html code that goes below my variable";

上述代码的结果

代码的顺序混乱了。 $ fincl变量在我的html代码的上半部分之前(之前)和在代码中指定$ fincl变量的每个文件的“1”回声中回显。见下面的例子。

content-1000.html content
content-20201.html content
"html code that goes above my variable"
"11"
"html code that goes below my variable"

任何想法发生了什么以及如何解决它?

1 个答案:

答案 0 :(得分:1)

include指令不返回包含文件的输出。相反,它返回文件中return语句的值(如果存在)。否则,如果包含成功,include将返回True

现在,您正在连接include语句(TrueTrue)中的两个返回值。 PHP将其转换为"11"

$fids = $mcat['mcat_fmemids'];
$fidsarr = explode(' ', $fids);

echo "html code that goes above my variable";
foreach ($fidsarr as $fid) {
   include "../content/".substr($fid, 0, -3)."/".$fid."/content-".$fid.".html";
}
echo "html code that goes below my variable";

如果您不想在这个地方包含文件,可以使用输出缓冲区获取include语句的输出:

ob_start();
foreach (...) {
   include $some_file;
}
$contents = ob_get_contents();  // get all the content within the buffer
ob_clean();  // clear the buffer
ob_end();   // stop output buffering

print $contents; // print the output