开发者社区> 问答> 正文

烧脑题,有一个程序循环逻辑问题,急在线等

正确答案:
感谢代码宇宙

$i=0;
<?php while(have_posts()):the_post();?>
    if ($i % 5 == 0) {
        echo '<div class="box">';
    }
    echo '<div class="post">...</div>';
    if ($i % 5 == 4) {
        echo '</div>';
    }
    $i++;
<?php endwhile;wp_reset_query(); ?>
if ($i % 5 != 0) {
    echo '</div>';
}

原文内容:
注意,这是一个细思极恐的问题,请仔细阅题!

首先,有一个不能改变的条件,就是循环输出内容的代码,例如

<?php while(have_posts()):the_post();?>

//此处将循环输出多篇文章

<?php endwhile;wp_reset_query(); ?>

我需要输出的HTML格式如下

<div id="content">
    <div class="box">
        <div class="post">...</div>
        <div class="post">...</div>
        <div class="post">...</div>
        <div class="post">...</div>
        <div class="post">...</div>
        //一共五篇,也就是5个POST
    </div>
    <div class="box">
        <div class="post">...</div>
        <div class="post">...</div>
        <div class="post">...</div>
        <div class="post">...</div>
        <div class="post">...</div>
    </div>
    <div class="box">
        <div class="post">...</div>
        <div class="post">...</div>
        <div class="post">...</div>
        <div class="post">...</div>
        <div class="post">...</div>
    </div>
</div>

条件:
1.文章数量不确定,一定>5
2.每隔5篇文章,需要使用一个Box的div包裹(难点在此,第一次输出

,第五次输出

3.你不可以把每5个post存一下其他地方,然后最后一起输出!
一个栗子?:
假设我有11篇文章,那么我的html最终格式应该是
<div id="content">
    <div class="box">
        <div class="post">...</div>
        <div class="post">...</div>
        <div class="post">...</div>
        <div class="post">...</div>
        <div class="post">...</div>
    </div>
    <div class="box">
        <div class="post">...</div>
        <div class="post">...</div>
        <div class="post">...</div>
        <div class="post">...</div>
        <div class="post">...</div>
    </div>
    <div class="box">
        <div class="post">...</div>
    </div>
</div>

这时候我的PHP代码应该是怎么样的呢?

我的尝试:

<div id="content">
    <?php while(have_posts()):the_post();$i++;?>
        <?php if($qp_i == 1 || $qp_i == 6 || $qp_i == 11 || $qp_i == 16){echo '<div class="box">';$qp_a++;} ?>

            ...post
            
        <?php if($qp_i == 5 || $qp_i == 10 || $qp_i == 15 || $qp_i == 20){echo '</div>';} ?>
    <?php endwhile;wp_reset_query(); ?>
</div>

这个方式的弊端是只能是IF里面规定的数值外,还必须是可以整除的文章数量。

可能你想到了用$i++ 之类的判断5次后输出,之类的,但是请注意,第一次循环需要echo出

这个标签的闭合需要在第五次输出后加上,也就是echo一个

提要:
关于周神的回答

= =!!! 这不是很简单吗... 有毛难度啊

$postCount=0; //文章计数
echo '<div class="box">';
<?php while(have_posts()):the_post();?>
//此处将循环输出多篇文章
$postCount++;
if( $postCount > 1 && $postCount% 5 == 1 ){

echo '</div><div class="box">';
}else{

echo '<div class="post">...</div>';
}
<?php endwhile;wp_reset_query(); ?>
echo '</div>';

结果:

第一个5个,第二三个4个,剩下空白

参考:

<?php
$a == 0;
echo '<div class="box">';
?>
<?php
for ($i = 0; $i < 16; $i++) {
    $a++;
    if ($a > 1 && $a % 5 == 1) {
        echo '</div><div class="box">';
    } else {
        echo '<div class="post">内容</div>';
    }
}
?>
<?php
echo '<div>';
?>

效果:http://www.presscode.cn/temp.php

展开
收起
杨冬芳 2016-06-20 10:55:25 1944 0
1 条回答
写回答
取消 提交回答
  • IT从业
    posts()):the_post();?>
        if ($i % 5 == 0) {
            echo '<div class="box">';
        }
        echo '<div class="post">...</div>';
        if ($i % 5 == 4) {
            echo '</div>';
        }
        $i++;
    <?php endwhile;wp_reset_query(); ?>
    if ($i % 5 != 0) {
        echo '</div>';
    }
    <?php while(have_posts()):the_post();?>
        echo '<div class="box">';
        echo '<div class="post">...</div>';
        if (have_posts()) {
            the_post();
            echo '<div class="post">...</div>';
        } else {
            echo '</div>';
            break;
        }
        if (have_posts()) {
            the_post();
            echo '<div class="post">...</div>';
        } else {
            echo '</div>';
            break;
        }
        if (have_posts()) {
            the_post();
            echo '<div class="post">...</div>';
        } else {
            echo '</div>';
            break;
        }
        if (have_posts()) {
            the_post();
            echo '<div class="post">...</div>';
        }
        echo '</div>';
    <?php endwhile;wp_reset_query(); ?>
    <?php while(have_posts()):the_post();?>
        echo '<div class="box">';
        echo '<div class="post">...</div>';
        if (have_posts()) {
            the_post();
            echo '<div class="post">...</div>';
            if (have_posts()) {
                the_post();
                echo '<div class="post">...</div>';
                if (have_posts()) {
                    the_post();
                    echo '<div class="post">...</div>';
                    if (have_posts()) {
                        the_post();
                        echo '<div class="post">...</div>';
                    }
                }
            }
        }
        echo '</div>';
    <?php endwhile;wp_reset_query(); ?>
    2019-07-17 19:43:52
    赞同 展开评论 打赏
问答分类:
PHP
问答地址:
问答排行榜
最热
最新

相关电子书

更多
面向失败设计 立即下载
动态、高效,蚂蚁动态卡片的内核逻辑 立即下载
十分钟上线-使用函数计算构建支付宝小程序服务 立即下载