将计数器与数组进行比较

问题描述 投票:0回答:3

我需要创建一个 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
与数组进行比较的部分。

php arrays wordpress
3个回答
2
投票

这段代码存在一些问题(以及一些建议)。

  • 您在 while 循环内定义了
    $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;
?>

2
投票

首先,每次运行循环时都会重新声明

$array
。将其放在开始
while
循环之前。

其次,您需要使用索引来访问数组内的元素:

<span class="<?php echo $array[$i] ?>;">Title</span>

第三,您需要将

$i = 0
放在 while
 循环之前。这里发生的是 
$i
 变量每次都被重置为 
0


1
投票
您正在打印整个

$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; ?>
    
© www.soinside.com 2019 - 2024. All rights reserved.