我正在尝试为循环中的每个第3个第4个和第5个元素实现特定的样式。我知道在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 )
,但它不起作用
答案 0 :(得分:2)
问题似乎是你试图在$post_num
子句中多次递增if
。试试这个。
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 />';
}
但是看输出可能不是你所期望的,因为具有模数(%
)运算符的第3,第4或第5运算符将包含一系列可整除的项:
1 |
2 |
3 | whatever
4 | whatever
5 | whatever
6 | whatever
7 |
8 | whatever
9 | whatever
10 | whatever
11 |
12 | whatever
13 |
14 |
15 | whatever
16 | whatever
17 |
18 | whatever
19 |
20 | whatever
另一个编辑好的,我想我现在知道了。我将模数的值分配给$post_count
的最大数字,然后我在$class_value_array
中为要分配类的项设置数组,然后现在为if
子句设置数组使用in_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 />';
}
输出现在是:
1 | 1 |
2 | 2 |
3 | 3 | whatever
4 | 4 | whatever
0 | 5 | whatever
1 | 6 |
2 | 7 |
3 | 8 | whatever
4 | 9 | whatever
0 | 10 | whatever
1 | 11 |
2 | 12 |
3 | 13 | whatever
4 | 14 | whatever
0 | 15 | whatever
1 | 16 |
2 | 17 |
3 | 18 | whatever
4 | 19 | whatever
0 | 20 | whatever
我很确定你正在寻找的是什么。
答案 1 :(得分:0)
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 )
for 4,等等。
答案 2 :(得分:0)
看起来您想要将单独的样式应用于第三,第四和第五项。为什么复杂的事情?只需添加一个类,表明该元素是系列中的第三,第四或第五个元素。您可以使用CSS来确定元素是否为组合。您不想使用CSS,我认为这意味着您不想使用nth-child
选择器。
此代码不仅仅是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>";
}
此时只需设置类的样式。这是输出:
<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>