我需要创建一个 WordPress 循环,它将显示具有 3 种不同颜色的 span 类的图像,每个循环 1 个,所以 0 = 绿色,1 = 蓝色,2 = 粉色。
由于我有 3 种颜色和 X 个输出,我考虑创建一个从 0 到 2 的数组,根据我描述的颜色分配一个值,然后创建一个条件,如果 I > 2,则 I = 0.
有了这个,我将只回显我的跨度类上的数组值,这应该可以解决问题。
我需要帮助的是为此创建语法,到目前为止,这就是我所拥有的:
<?php while ( have_posts() ) : the_post(); $i = 0 ?>
<?php
$array = array(
0 => 'green',
1 => 'blue',
2 => 'pink',
);
?>
<span class="<?php echo $array ?>;">Title</span>
<?php
$i++;
?>
<?if ($i > 2) { $i=0; } endif; ?>
<?php endwhile; ?>
我缺少应该将计数器
$i
与数组进行比较的部分。
这段代码存在一些问题(以及一些建议)。
$i = 0;
,这意味着它始终是 == 0
$array
而不是一项如何修复:
$i = 0;
移到 while 循环之外(因此它是在循环之前定义的)echo $array[$i]
回显您要查找的项目 ID $i / 3
的余数并将其用作索引你也可以
$colors = array('green', 'blue', 'pink');
,其行为相同 - 这可以工作,因为 PHP 使用从 0 开始的默认索引$colors
等变量而不是 $array
来更清楚地了解发生了什么<?php
标签的数量以使事情更清晰$colors
)请参阅下面的完整代码
<?php
$colors = array(
0 => 'green',
1 => 'blue',
2 => 'pink',
);
$i = 0;
while ( $loop->have_posts() ) : $loop->the_post();
?>
<span class="<?php echo $colors[$i % 3] ?>;">Title</span>
<?php
$i++;
endwhile;
?>
进一步简化
<?php
$colors = array('green', 'blue', 'pink');
$i = 0;
while ( $loop->have_posts() ) : $loop->the_post();
?>
<span class="<?php echo $colors[$i % 3] ?>;">Title</span>
<?php
$i++;
endwhile;
?>
首先,每次运行循环时都会重新声明
$array
。将其放在开始 while
循环之前。
其次,您需要使用索引来访问数组内的元素:
<span class="<?php echo $array[$i] ?>;">Title</span>
第三,您需要将
$i = 0
放在 while
循环之前。这里发生的是
$i
变量每次都被重置为
0
。
$array
而不是单个数组元素(即
$array[$i]
),您还在
$i = 0
循环内重置计数器(
while
):
<?php
// a little bit cleaned up version of your code
$array = array(
0 => 'green',
1 => 'blue',
2 => 'pink',
);
$i = 0;
while ( $loop->have_posts() ) : $loop->the_post();
?>
<span class="<?php echo $array[$i] ?>;">Title</span>
<?php
$i++;
if ($i > 2) { $i=0; }
endwhile;
?>