在循环中包含include()

时间:2012-12-31 05:48:41

标签: php loops include

我有这个代码将数据循环到我的网站:

$loop = Array();

# LOOP
foreach($sql->query($get_blogposts) AS $blogpost) {
    echo '<div class="blogpost-avatar" style="background-image: url('.url('images/avatars/avatar-cropped.jpg').');"></div>';

    echo '<div class="blogpost-information">';
        include(DIR_REQUIRED.'/blogpost-information.php');
    echo '</div>';

    echo '<div class="blogpost-content">';
        echo $blogpost['message'];
    echo '</div>';
}


echo implode('<hr>', $loop);

问题在于我不知道如何将$loop[] =置于foreach循环中。我测试过这样:

    $loop[] = '<div class="blogpost-avatar" style="background-image: url('.url('images/avatars/avatar-cropped.jpg').');"></div>

    <div class="blogpost-information">'.
        include(DIR_REQUIRED.'/blogpost-information.php')
    .'</div>

    <div class="blogpost-content">'.
        $blogpost['message']
    .'</div>';

但是我收到错误消息“Failed opening for for include”。我甚至测试过在=之前添加一个点,如下所示:$loop[] .=但这也不起作用。

如何解决我的问题?

提前致谢。

3 个答案:

答案 0 :(得分:3)

如何使用输出缓冲区!

$loop = Array();    # LOOP
foreach($sql->query($get_blogposts) AS $blogpost) {
  $str = '';
  $str .= '<div class="blogpost-avatar" style="background-image: url('.url('images/avatars/avatar-cropped.jpg').');"></div>';

  $str .= '<div class="blogpost-information">';

  ob_start();

  include(DIR_REQUIRED.'/blogpost-information.php');
  $str .= ob_get_contents();
  ob_end_clean();

  $str .= '</div>';

  $str .= '<div class="blogpost-content">';
  $str .= $blogpost['message'];
  $str .= '</div>';
  $loop[] = $str;
}

答案 1 :(得分:0)

<?php

$loop = array();

foreach ($sql->query($get_blogposts) as $blogpost) 
{
    ob_start();

        echo '<div class="blogpost-avatar" style="background-image: url('.url('images/avatars/avatar-cropped.jpg').');"></div>';
        echo '<div class="blogpost-information">';

        include DIR_REQUIRED.'/blogpost-information.php';

        echo '</div>';
        echo '<div class="blogpost-content">';
        echo $blogpost['message'];
        echo '</div>';

    $loop[] = ob_get_contents();
    ob_end_clean();
}

echo implode('<hr>', $loop);

?>

http://php.net/manual/en/function.ob-get-contents.php

答案 2 :(得分:0)

我假设有一些静态信息存储在“blogpost-information.php”文件中,因为你添加文件内容的方式,得出这个结论。如果我的猜测是正确的,那么解决方案可能会起作用 -

  

$ str =“”;
  如果(file_exists(DIR_REQUIRED。 '/博客帖子-information.php文件')){
    $ str = fgets(DIR_REQUIRED。'/ blogpost-information.php');
     }
  array_push($ loop,“blah blah”。$ str。“blah blah”);