2011-06-14 77 views
1

原代码如下所示:使输出成奇数和偶数?

<?php 

    foreach($values as $value){ 

     $downlink=node_load($value); 

    echo '<li><input type="checkbox" checked="checked"/>.$downlink->title.'</li>'; 
    } 

?> 

我想使输出到

<li class="odd">...</li> 
<li class="even">...</li> 
..... 

这是我的方式。但它不起作用。

$i=0; 
foreach($values as $value){ 

      $downlink=node_load($value); 
      if($i%2==0){ 
echo '<li class="even"><input type="checkbox" checked="checked"/>.$downlink->title.'</li>';} 
else{ 
     echo '<li class="odd"><input type="checkbox" checked="checked"/>.$downlink->title.'</li>'; 
} 
$i++; 
     } 
+3

为什么不起作用?你看到什么错误。如果foreach循环执行第一个循环,则返回 – TJHeuvel 2011-06-14 10:04:14

回答

0

你的做法是完美的,但它有一个小故障,可能会导致它不按预期工作。看起来你在两个语句中的“/>”后面的起始<li>标记后缺少'(单引号)。

这是它应该如何看(注意加粗单引号):

回声“<李班=‘甚至’> <输入类型=‘复选框’检查=‘检查’/ > 。 $ downlink-> title。 “< /李>”

的另一件事情虽然没有相关的 - 它在开始<李>标签月底建成一个结局/(正斜杠),因为它有它自己的结束标记< /李不需要>

8

这样做的服务器端的我个人的方法是:

foreach ($foo as $bar) { 

    $class = ($class == "even") ? "odd" : "even"; 

    echo "<li class='".$class."'>blah blah</li>"; 

} 
+0

。该值将被分配给该类。没有什么价值可以与班级进行比较。如何输出偶数或奇数?谢谢 – zhuanzhou 2011-06-14 10:46:32

+1

因为在循环的第一次迭代之前,$ class不等于任何东西,它将被设置为“odd”(因为它当前不等于“even”)。您应该尽可能预先设置它,因为尝试比较未设置的$ class可能会在您的屏幕或日志中生成PHP通知(如果启用了该级别的错误报告)。 – Codecraft 2011-06-14 11:57:53

+0

当循环的第二次迭代时,$ class也不等于anything.how的输出甚至?谢谢。 – zhuanzhou 2011-06-14 12:56:06

0

我认为你缺少一个报价:

$i=0; 
foreach($values as $value){ 
     $downlink=node_load($value); 
     if($i%2==0){ 
      echo '<li class="even"><input type="checkbox" checked="checked"/>'.$downlink->title.'</li>';} 
else{ 
     echo '<li class="odd"><input type="checkbox" checked="checked"/>.$downlink->title.'</li>'; 
} 
$i++; 
     } 
+0

他实际上在'checked =“checked”/>.$下行 - >标题' – tradyblix 2011-06-14 10:11:47

+0

我想写报价!:) – 2011-06-14 10:29:47

1

另注:

开始从$i=1;

和奇

0

修改如下图所示:

<?php 
    $i=0; 
    foreach($values as $value){ 
    $downlink=node_load($value); ?> 
    <li class="<?php echo ($i%2==0) ? 'even' :'odd'" ?>> 
    <input type="checkbox" checked="checked"><?php echo $downlink->title;?></li> 
    <?php 
      $i++; 
    }//end of foreach 

注:为什么ü把checked=checked所有复选框?你的逻辑可能在这里出错