使内部回声功能在格式化位置输出

时间:2016-07-18 20:21:11

标签: php function heredoc

我已经尝试了许多方法来实现这一点,包括所有类型的引用等。在解释情况之前,我会给你我当前的代码。

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中,并得到相同的结果。

我该如何解决这个问题?

2 个答案:

答案 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;
}