2017-08-07 44 views
0

我有一个问题,我需要在使用foreach循环生成的表中每隔一行着色。虽然在一段时间内,因为是一个简单的平庸,所以在全球范围内,我完全不知道如何接受它。着色foreach循环表中的每第二行

我把我能够创建的代码,只有一个问题 - 它为所有相同的行着色。

<?php 
     $details = array_combine($_POST['detail'], $_POST['detail-description']); 
     foreach($details as $key => $value) { 
     $bg = ($i % 2 == 0) ? 'red' : 'yellow'; 
     ?> 
      <tr style="background: <?php echo $bg; ?>;"><td style="padding: 3px 10px; text-align: right; border-right: 1px solid #dbdbdb;" width="50%"> 
      <?php echo $key ?> 
      </td> 
      <td style="padding: 3px 10px; text-align: left;" width="50%"> 
      <?php echo $value; ?> 
      </td> 
      </tr> 
     <?php 
     } 
     ?> 
+2

'$ i' __必须被增加 –

+0

什么是你的'$ key',也许你可以使用'$ bg =($ key%2 == 0)? '红':'黄';'(而不是'$ i')。 – xander

+0

您可以使用'CSS'来完成。而且这也很简单。 –

回答

0

下面的代码:

<?php 
$details = array(
    "test1"=>"tester1", 
    "test2"=>"tester2", 
    "test3"=>"tester3", 
    "test4"=>"tester4", 
    "test5"=>"tester5", 
    "test6"=>"tester6", 
    "test7"=>"tester7", 
); 
$i=0; 
foreach($details as $key => $value) { 
    $i++; 
    $bg=($i%2==0?'red':'yellow'); 
    ?> 
    <table> 
     <tr style="background-color: <?php echo $bg; ?>;"> 
      <td style="padding: 3px 10px; text-align: right; border-right: 1px solid #dbdbdb;" width="50%"> 
       <?php echo $key ?> 
      </td> 
      <td style="padding: 3px 10px; text-align: left;" width="50%"> 
       <?php echo $value; ?> 
      </td> 
     </tr> 
    </table> 
    <?php 
} 
?> 

返回此:

enter image description here

你需要table标签,你可以在tr标签应用background-color之前。

相关问题