与反

2013-04-08 15 views
0

使用foreach循环我要输出foreach语句的结果,但我想他们组合成一个div 3的与反

所以像:

<div>image image image</div> 
<div>image image image</div> 
<div>image image image</div> 

这里是我到目前为止的代码:

$args = array('numberposts' => 3, 'offset'=> 0, 'category' => 9); 

      $myrows = get_posts($args); 
       foreach($myrows as $row) { ?> 
       <div> 
        <?php if (has_post_thumbnail($row->ID)) { 
        echo '<a href="' . get_permalink($row->ID) . '" title="' . esc_attr($row->post_title) . '">'; 
         echo get_the_post_thumbnail($row->ID); 
        echo '</a>'; 
        }?> 
       </div> 
       <?php } ?> 
+2

使用一个临时变量并每三个循环重置一次。 – Voitcus 2013-04-08 13:27:03

回答

1

可以使用array_chunk()创建块:

foreach (array_chunk($myrows) as $mychunk) { 
    echo '<div>'; 
    foreach ($mychunk as $row) { 
     // print your entries 
     if (has_post_thumbnail($row->ID)) { 
      echo sprintf('<a href="%s" title="%s">%s</a>', 
       get_permalink($row->ID), 
       esc_attr($row->post_title), 
       get_the_post_thumbnail($row->ID) 
      ); 
     } 
    } 
    echo '</div>'; 
} 

当然,如果if条件没有得到满足,您会得到零个,一个或两个项目块而不是预期的三个项目。

2
$myrows = get_posts($args); 
$chunks = array_chunk($myrows,3); 
?> 
<?php foreach($chunks as $myrows): ?> 
<div> 
    <?php foreach($myrows as $row): ?> 
    <div> 
     <?php if(has_post_thumbnail($row->ID)): ?> 
     <a href="<?=get_permalink($row->ID)?>" title="<?=esc_attr($row->post_title)?>"> 
      <?=get_the_post_thumbnail($row->ID)?> 
     </a> 
     <?php endif ?> 
    </div> 
    <?php endforeach ?> 
</div> 
<?php endforeach ?> 
+0

谢谢!这似乎是所有答案中最好的!奇迹般有效 – Rik89 2013-04-08 13:45:30

0
<div> 
    <?php 
    $args = array('numberposts' => 3, 'offset' => 0, 'category' => 9); 

    $myrows = get_posts($args); 
    foreach($myrows as $idx => $row) { 
    if ($idx % 3 == 0) echo "</div><div>"; 
    if (has_post_thumbnail($row->ID)) { 
     echo '<a href="' . get_permalink($row->ID) . '" title="' . esc_attr($row->post_title) . '">'; 
     echo get_the_post_thumbnail($row->ID); 
     echo '</a>'; 
    } ?> 
</div> 
0

为什么不使用modulo操作?

$counter = 0; 

echo '<div>'; 

foreach ($myrows as $row) 
{ 
    $counter++; 

    if ($counter % 3 == 0) echo '</div><div>'; 

    echo $row; 
} 

echo '</div>'; 
0

试试这个代码。

<?php 
$args = array('numberposts' => 3, 'offset'=> 0, 'category' => 9); 

      $myrows = get_posts($args); 
      $tempCnt=0; 
       foreach($myrows as $row) { 
        //12 
        if($tempCnt==3) 
        { 
         $tempCnt=0; 
         //do your reset code here. 
        } 
        $tempCnt++; 
        ?> 
       <div> 
        <?php if (has_post_thumbnail($row->ID)) { 
        echo '<a href="' . get_permalink($row->ID) . '" title="' . esc_attr($row->post_title) . '">'; 
         echo get_the_post_thumbnail($row->ID); 
        echo '</a>'; 
        }?> 
       </div> 
       <?php } ?>