你能告诉我为什么HTMLdiv在echo中PHP函数执行之前关闭吗?

你能告诉我为什么HTMLdiv在echo中PHP函数执行之前关闭吗?,php,html,Php,Html,我面临一个奇怪的问题。 我的PHP页面有以下代码 echo "<div id='page_$i' class='layout_pages'>".eval('?>' . $layouts[$i]. '<?php ')."</div>"; 这里$i是我的迭代器,$layouts是一个数组,其中包含从数据库获取的多个布局。有些布局中有PHP代码。这就是我使用eval函数的原因 现在的问题是,这段代码的HTML输出是这样的 <div id='page_$i'

我面临一个奇怪的问题。 我的PHP页面有以下代码

echo "<div id='page_$i' class='layout_pages'>".eval('?>' . $layouts[$i]. '<?php ')."</div>";
这里$i是我的迭代器,$layouts是一个数组,其中包含从数据库获取的多个布局。有些布局中有PHP代码。这就是我使用eval函数的原因

现在的问题是,这段代码的HTML输出是这样的

<div id='page_$i' class='layout_pages'></div>
//Layout output goes here
理想情况下,布局输出应该包装在这个DIV中。但DIV在布局之前开始和关闭。你能给我建议一些好的解决办法吗

[已解决]

好吧,我通过在代码中做以下更改来解决这个问题。而是在一个echo语句中显示所有数据。我使用了多个echo命令,现在一切都很好。非常感谢你的建议

<div id='page_<?php echo $i; ?>' class='layout_pages' ><?php echo eval('?>' . $layouts[$i]. '<?php '); ?></div>;

因为我没有100分。所以我不能回答我自己的问题。这就是为什么我要编辑我的问题:

你能转储$layout内容吗?可能$layout开头有一个空元素…

其中的rogue eval函数可能是罪魁祸首,我建议改为这样做:

echo "<div id='page_".$i."' class='layout_pages'>".$layouts[$i]."</div>";
试试这个:

echo "<div id='page_$i' class='layout_pages'>".eval('return ('. $layouts[$i].');')."</div>";
echo "<div id='page_$i' class='layout_pages'>",eval('?>' . $layouts[$i]. '<?php '),"</div>";
否则eval返回NULL

请尝试以下操作:

echo "<div id='page_$i' class='layout_pages'>".eval('return ('. $layouts[$i].');')."</div>";
echo "<div id='page_$i' class='layout_pages'>",eval('?>' . $layouts[$i]. '<?php '),"</div>";

这是我见过的使用eval的最奇怪的尝试之一。你想用它实现什么?看起来您正试图获取一个字符串并从中构建一个PHP脚本,该脚本可以不经修改地输出该字符串,然后对其进行求值,以便再次获得原始字符串。这就是为什么我需要使用这个函数。最终输出是简单的HTML代码。如果你把PHP代码放在一个数组中并对其求值,那你就错了。好吧,它在数组的索引上。我不认为这会有什么问题。它类似于一个PHP变量,最好是使用$i作为参数调用一个函数,该函数将返回evaled代码生成的HTML.ummm,但要实现平滑的函数流,需要eval。否则,我将不得不在多个文件中进行大量更改。我刚刚看到您在原始帖子上的评论,我不经常使用eval,但据我了解,类似这样的东西应该可以使用echo.eval$layouts[$i]。;埃科才是真正的罪犯。我已经编辑了我的问题。问题解决了。谢谢你的建议。