在php中设置每N个范围

在php中设置每N个范围,php,wordpress,loops,Php,Wordpress,Loops,我正在尝试为循环中的每个第三、第四和第五元素实现一种特定的样式。我知道这在css中是可能的,但我也想在php中学习它。下面的代码将类插入到每3个元素中 global $post_num; if ( ++$post_num % 3 == 0 ) $class = 'whatever'; echo $class; 我尝试过if(+++$post_num%3==0)和(++$post_num%4==0)和(++$post_num%5==0),但它不起作用问题似乎是您试图在if子句中多次增加$

我正在尝试为循环中的每个第三、第四和第五元素实现一种特定的样式。我知道这在css中是可能的,但我也想在php中学习它。下面的代码将类插入到每3个元素中

global $post_num;
if ( ++$post_num % 3 == 0 )
    $class = 'whatever';
echo $class;

我尝试过
if(+++$post_num%3==0)和(++$post_num%4==0)和(++$post_num%5==0)
,但它不起作用

问题似乎是您试图在
if
子句中多次增加
$post_num
。试试这个

global $post_num;
$class = '';
if (($post_num % 3 == 0) || ($post_num % 4 == 0) || ($post_num % 5 == 0)) {
  $class = 'whatever';
  ++$post_num;
}
echo $class;
但也就是说,我仍然不清楚
+$post_num
起到了什么作用,因为这个逻辑不会被放在一个更大的循环中吗?这不管用吗

global $post_num;
$class = '';
if (($post_num % 3 == 0) || ($post_num % 4 == 0) || ($post_num % 5 == 0)) {
  $class = 'whatever';
}
echo $class;
意思是
$post_num
是一个基于在脚本逻辑中滚动的内容的值吗?这个子句将简单地获取
$post_num
的值并执行它?如果您有更多的代码来说明现有的结构,这将有所帮助

编辑仅为本例添加我自己的循环,以便更清楚发生了什么

for ($post_num = 1; $post_num <= 20; $post_num++) {
  $class = '';
  if (($post_num % 3 == 0) || ($post_num % 4 == 0) || ($post_num % 5 == 0)) {
    $class = 'whatever';
  }
  echo $post_num . ' | ' . $class . '<br />';
}
另一次编辑好的,我想我现在明白了。我将模数的值分配给
$post\u count
的最大值,然后在
$class\u value\u array
中为要分配类的项目设置一个数组,然后
if
子句现在使用
in\u array()
进行验证

for ($post_num = 1; $post_num <= 20; $post_num++) {
  $class = '';
  $post_count = $post_num % 5;
  $class_value_array = array(0, 3, 4);
  if (in_array($post_count, $class_value_array)) {
    $class = 'whatever';
  }
  echo $post_count . ' | ' . $post_num . ' | ' . $class . '<br />';
}
我很确定这就是你要找的

if ( ++$post_num % 3 == 0 ) && ( ++$post_num % 4 == 0 ) && ( ++$post_num % 5 == 0 )
将为您提供每个gcd(3,4,5)=第60行的课程。只要做:

if  ( ++$post_num % 5 == 0 )
五个人

if( ++$post_num % 4 == 0 )

对于4,等等。

看起来您希望对第三、第四和第五项应用单独的样式。为什么要把事情复杂化?只需添加一个类,指示该元素是系列中的第三、第四或第五个元素。您可以使用CSS来确定元素是否为组合。您不想使用CSS,我认为这意味着您不想使用第n个子项选择器

此代码不仅仅是CSS/HTML,例如,您可以轻松地将代码从应用类更改为执行函数

for ( $i = 0; $i < 300; $i++ ) {
  $classes = array();
  if ( $i % 3 == 0 ) $classes[] = 'tri';
  if ( $i % 4 == 0 ) $classes[] = 'quad';
  if ( $i % 5 == 0 ) $classes[] = 'quint'; 

  echo "<div class='" . implode(' ', $classes), "'>Number " . $i . "</div>";
}
($i=0;$i<300;$i++)的
{
$classes=array();
如果($i%3==0)$classes[]='tri';
如果($i%4==0)$classes[]='quad';
如果($i%5==0)$classes[]='quint';
回显“数字”.$i.“;
}
在这一点上,只需设置类的样式即可。以下是输出:

<div class="tri quad quint">Number 0</div>
<div class="">Number 1</div>
<div class="">Number 2</div>
<div class="tri">Number 3</div>
<div class="quad">Number 4</div>
<div class="quint">Number 5</div>
<div class="tri">Number 6</div>
<div class="">Number 7</div>
<div class="quad">Number 8</div>
<div class="tri">Number 9</div>
<div class="quint">Number 10</div>
数字0
第一
二号
三号
4号
五号
6号
七号
8号
9号
十号

我想你会想在某个地方做个循环。哦,是的,现在有点明显了如果(+++$post_num%3==0)&&(++$post_num%4==0)&&(++$post_num%5==0)`将向$post_num添加1到3次。把它分成一行。第一个代码只在第一篇文章中添加类,而第二个代码将类应用于所有文章。好的,我想我已经找到了一个很好的解决方案。请参见上面答案中的“我的
另一次编辑”。简化了逻辑&做了我相信您希望它做的事情。我在发布问题之前测试了它。不幸的是,这不是解决办法。
for ( $i = 0; $i < 300; $i++ ) {
  $classes = array();
  if ( $i % 3 == 0 ) $classes[] = 'tri';
  if ( $i % 4 == 0 ) $classes[] = 'quad';
  if ( $i % 5 == 0 ) $classes[] = 'quint'; 

  echo "<div class='" . implode(' ', $classes), "'>Number " . $i . "</div>";
}
<div class="tri quad quint">Number 0</div>
<div class="">Number 1</div>
<div class="">Number 2</div>
<div class="tri">Number 3</div>
<div class="quad">Number 4</div>
<div class="quint">Number 5</div>
<div class="tri">Number 6</div>
<div class="">Number 7</div>
<div class="quad">Number 8</div>
<div class="tri">Number 9</div>
<div class="quint">Number 10</div>