繁体   English   中英

PHP数组的问题

[英]problems with a PHP array

我首先要说的是,我确实是PHP的新手,我需要解决一个问题,我知道逻辑,但是在语法上我已经死了。

就是这种情况。

我需要创建一个wordpress循环,该循环将显示具有3种不同颜色的span类的图像,每个循环1个,这样,0 =绿色,1 =蓝色,2 =粉色。

由于我有3种颜色,输出​​数量为X,所以我考虑创建一个从0到2的数组,根据我描述的颜色分配一个值,然后创建一个条件,如果i> 2,则i = 0 。

这样,我将在我的span类上回显数组值,这应该可以解决问题。

我需要帮助的是为此创建语法,到目前为止,这是我所拥有的:

<?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; 在while循环内意味着它总是== 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] ),同时还要在while循环内重置计数器( $i = 0 ):

<?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; 
?> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM