2012-12-31 105 views
0

我有这样的代码来循环中的数据到我的网站:包括包括()在一个循环中

$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); 

的问题是,我不知道我应如何在foreach循环放$loop[] =。我已经这样测试:

$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>'; 

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

我该如何解决我的问题?

在此先感谢。

+0

您确定该文件存在吗?你的包含文件中是否有return语句? – Michael

+0

是的。我包含的文件确实存在。 – Erik

回答

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; 
} 
+0

非常聪明,它的工作。非常感谢! ^^ – Erik

+0

不客气:) – Broncha

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

0

我假定存在存储在“博客帖子,information.php文件”文件,因为你要添加的文件的内容的方式,我得出这个结论的一些静态信息。如果我的猜测是正确的,可能下面的解决方案可能会工作 -

$ str =“”;
if(file_exists(DIR_REQUIRED。'/ blogpost-information.php')){
  $ str = fgets(DIR_REQUIRED。'/ blogpost-information.php');
}
array_push($ loop,“blah blah”。$ str。“blah blah”);