我已经尝试了许多方法来实现这一点,包括所有类型的引用等。在解释情况之前,我会给你我当前的代码。
function show_msgs($msgs)
{
foreach($msgs as $msg) {
echo '<div class="msg">' . $msg . '</div>' . "\n ";
}
}
function generate_msgBox()
{
global $array;
$stackoverflow =
<<<EOT
<div class="container">
<div class="msgBox">
%s
</div>
</div>
EOT;
$stackoverflow = sprintf($stackoverflow, show_msgs($array));
echo $stackoverflow;
}
generate_msgBox函数当前在调用时输出:
<div class="msg">First message!</div>
<div class="msg">Seconds message!</div>
<div class="container">
<div class="alertBox">
</div>
</div>
但是我需要输出它:
<div class="container">
<div class="alertBox">
<div class="msg">First message!</div>
<div class="msg">Seconds message!</div>
</div>
</div>
我尝试将函数直接放在由正常引号括起的echo中,并得到相同的结果。
我该如何解决这个问题?
答案 0 :(得分:2)
show_msgs函数中的Echo在输出generate_msgBox函数之前有效 - 当你调用它时。只返回带有函数结果的字符串
function show_msgs($msgs)
{
$ret = '';
foreach($msgs as $msg) {
$ret .= '<div class="msg">' . $msg . '</div>' . "\n ";
}
return $ret;
}
答案 1 :(得分:1)
这个怎么样:
function show_msgs($msgs)
{
foreach($msgs as $msg) {
echo '<div class="msg">' . $msg . '</div>' . "\n";
}
}
function generate_msgBox()
{
$stackoverflow = '<div class="container"><div class="msgBox">'.show_msgs().'</div></div>';
echo $stackoverflow;
}