使 echo 中的函数在格式化位置输出

Make function inside echo be outputted at formatted position

我尝试了很多方法来解决这个问题,包括所有类型的引用等。在解释情况之前,我会先给你我当前的代码。

function show_msgs($msgs)
{
    foreach($msgs as $msg) {
        echo '<div class="msg">' . $msg . '</div>' . "\n    ";
    }
}

function generate_msgBox()
{
    global $array;        

    $Whosebug = 
<<<EOT
    <div class="container">
        <div class="msgBox">
            %s      
        </div>
    </div>
EOT;

    $Whosebug = sprintf($Whosebug, show_msgs($array));

    echo $Whosebug;
}

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 中,用普通引号括起来,我得到了相同的结果。

我该如何解决这个问题?

这个怎么样:

function show_msgs($msgs)
{
    foreach($msgs as $msg) {
        echo '<div class="msg">' . $msg . '</div>' . "\n";
    }
}

function generate_msgBox()
{
    $Whosebug = '<div class="container"><div class="msgBox">'.show_msgs().'</div></div>';

    echo $Whosebug;
}

show_msgs 函数中的 Echo 在 generate_msgBox 函数输出之前工作 - 当您调用它时。只是 return 函数结果的字符串

function show_msgs($msgs)
{
    $ret = '';
    foreach($msgs as $msg) {
        $ret .= '<div class="msg">' . $msg . '</div>' . "\n    ";
    }
    return $ret;
}