【问题标题】:Every 3rd Iteration of PHP LoopPHP 循环的每 3 次迭代
【发布时间】:2014-07-06 16:17:03
【问题描述】:

当我说“每 3 次迭代”时,我的意思是“每 3 次迭代......从第 4 号开始”

如果只是每 3 次,我会像这样针对适当的迭代:

<?php if ($count % 3 == 0) : ?>

请记住,我已事先将 $count 设置为 1

但迭代需要从第 4 次开始,然后是第 7 次、第 10 次等等。

有谁知道我怎样才能做到这一点?我可以用上面那个简单的if 语句来做吗?

不幸的是,我认为for 循环是不可能的,因为这是我正在处理的 WordPress 循环

【问题讨论】:

  • &lt;?php $offset=1; if (( $count - $offset) % 3 == 0) : ?&gt;
  • &lt;?php if ($count % 3 == 0 &amp;&amp; $count != 3) : ?&gt;

标签: php loops iteration offset


【解决方案1】:

您对使用模运算符的想法是正确的,您只需要扩展围绕它的逻辑范围:

您希望在最初的 4 次过去之后每第三次迭代。在前 4 个之后开始你的逻辑:

if ($count > 4)

然后,你想要在那之后的每 3 个。您的计数器包含您不想包含的最初 4 次迭代,因此请从您的计数器中删除它并检查当前迭代是否是 3 的倍数:

if (($count - 4) % 3 === 0)

这应该可以满足您的需求。

if ($count > 4)
{
    if (($count - 4) % 3 === 0)
    {
        ...
    }
}

你也可以把它放在一行中:

if ($count > 4 && ($count - 4) % 3 === 0)
{
    ...
}

【讨论】:

  • 谢谢!我自己永远也想不到,哈哈。我的 WP Loop 中有以下内容,但不幸的是它似乎无法正常工作&lt;?php if ($count &gt; 4 &amp;&amp; ($count - 4) % 3 === 0) : ?&gt;&lt;h1&gt;Break&lt;/h1&gt;&lt;?php endif; ?&gt;
  • 你可以在这里看到,标题“Break”应该出现在前 3 个框之后,而不是出现在前 6 个框之后? bit.ly/SrEl4h
  • ...其实没关系,我刚刚意识到用 jQuery 来实现它要容易得多!无论如何感谢您的帮助
【解决方案2】:
foreach($array as $key=>$value){
    if($key % 3 != 0){
        continue;
    }
}

【讨论】:

    猜你喜欢
    • 2017-04-28
    • 2017-10-04
    • 2016-04-09
    • 2010-10-30
    • 1970-01-01
    • 2011-11-20
    • 2018-09-01
    • 1970-01-01
    • 2020-01-05
    相关资源
    最近更新 更多