使用带计数器的foreach循环

时间:2013-04-08 13:26:02

标签: php

我想输出一个foreach语句的结果,但我想将它们分成3个div中的div

所以喜欢:

<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 } ?>

5 个答案:

答案 0 :(得分: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 ?>

答案 1 :(得分: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 :(得分: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>

答案 3 :(得分:0)

为什么不使用modulo运算符?

$counter = 0;

echo '<div>';

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

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

    echo $row;
}

echo '</div>';

答案 4 :(得分: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 } ?>