我在表中包含多个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"
任何想法发生了什么以及如何解决它?
答案 0 :(得分:1)
include
指令不返回包含文件的输出。相反,它返回文件中return语句的值(如果存在)。否则,如果包含成功,include
将返回True
。
现在,您正在连接include语句(True
和True
)中的两个返回值。 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