帮助解决php中的foreach循环问题

时间:2010-09-17 00:33:12

标签: php arrays

我需要帮助,试图弄清楚如何在这个foreach循环中设置我的第二个条件($column == 'Status),因为它没有使用我的color_array。

我创建了一个数组color_array,用于将值设置为特定颜色:

$color_array = array(
        'Succeeded'       => 'blue',
        'Failed'          => 'red',
        'Review Logs'     => 'yellow'
);

我希望我的列Status能够进行颜色编码。我的foreach循环在这里创建了我的表:

$keys = array('Server', 'Target','Set','Time', 'Length','Size','Status');
echo '<table id="stats_1"><tr>';
foreach ($keys as $column) {
   echo '<th>' . $column . '</th>';
}
echo '</tr>';

foreach ($data as $row){
  foreach ($keys as $column){
     if (isset($row[$column])){
         if ($column == 'Server'){
            echo '<td> <a href="' . $server_array[$row[$column]] . '">' . $row[$column] . '</a></td>';
         } else {
            echo '<td>' . $row[$column] . '</td>';
         }
         if ($column == 'Status'){  //2nd condition here
            echo '<td> <font color="' . $color_array[$row[$column]] . '">' . $row[$column] . '</font></td>';
         } else {
            echo '<td>' . $row[$column] . '</td>';
         }
     } elseif ($column == 'Length') {
         echo '<td> n/a </td>';
     } elseif ($column == 'Size') {
         echo '<td> n/a </td>';
     } else {
         echo '<td> </td>';
     }
  }
}
echo '</table>';

第一种情况($column == 'Server')工作正常,但在添加第二种情况后,我认为它会以同样的方式工作吗?但它不是......不知怎的,我的逻辑错了。如何让第二个案例起作用?感谢。

2 个答案:

答案 0 :(得分:2)

我认为应该是这样的事情:

if ($column == 'Server'){
    echo '<td> <a href="' . $server_array[$row[$column]] . '">' . $row[$column] . '</a></td>';
}elseif ($column == 'Status'){  //2nd condition here
    echo '<td> <font color="' . $color_array[$row[$column]] . '">' . $row[$column] . '</font></td>';
} else {
    echo '<td>' . $row[$column] . '</td>';
}

答案 1 :(得分:1)

你的意思是这么说吗?

if (isset($row[$column])){
    if ($column == 'Server'){
        echo '<td> <a href="' . $server_array[$row[$column]] . '">' . $row[$column] . '</a></td>';
    } elseif ($column == 'Status'){  //2nd condition here
        echo '<td> <font color="' . $color_array[$row[$column]] . '">' . $row[$column] . '</font></td>';
    } else {
        echo '<td>' . $row[$column] . '</td>';
    }
 } elseif ($column == 'Length') {
     echo '<td> n/a </td>';
 } elseif ($column == 'Size') {
     echo '<td> n/a </td>';
 } else {
     echo '<td> </td>';
 }