需要帮助重新编写这个PHP代码/逻辑。现在,如果我对“持续时间”或“大小”列没有任何值,则我的html表为空,我将默认值设置为n/a
。
我想更改逻辑以继续处理该条件并提供n/a
值,但如果BOTH为n/a
,还要添加逻辑以读取,然后设置我的列'Status'值= '进行中'。
不知何故,我评论的代码无法正常工作。感谢。
foreach ($keys as $column){
if (isset($row[$column])){
if ($column == 'Server'){
echo '<td> <a href="' . $server_array[$row[$column]] . '">' . $row[$column] . '</a></td>';
} elseif ($column == 'Status'){
echo '<td> <font color="' . $color_array[$row[$column]] . '">' . $row[$column] . '</font></td>';
} else {
echo '<td>' . $row[$column] . '</td>';
}
} elseif ($column == 'Status') {
echo '<td><font color="yellow"> Review </font></td>';
} elseif ($column == 'Duration') {
echo '<td> n/a </td>';
} elseif ($column == 'Size') {
echo '<td> n/a </td>';
//} elseif ($column == 'Duration') && ($column =='Size') {
// echo '<td> In Progress </td>';
} else {
echo '<td> </td>';
}
}
答案 0 :(得分:2)
试试这个
} elseif ($column == 'Status') {
if (!isset($row['Duration']) && !isset($row['Size']))
echo '<td> In Progress </td>';
else
echo '<td><font color="yellow"> Review </font></td>';
}
而不是
} elseif ($column == 'Status') {
echo '<td><font color="yellow"> Review </font></td>';
}
答案 1 :(得分:1)
switch ($column){
case "Status":
$html="<font color="yellow"> Review </font>";
break;
case "Duration":
case "Size":
$html="n/a";
break;
case "SOME_OTHER_SOMETHING":
$html=" In Progress ";
break;
default:
$html="";
break;
}
echo"<td>$html</td>";
答案 2 :(得分:0)
注释掉的代码应为:
} elseif (($column != 'Duration') && ($column != 'Size')) {
echo '<td> In Progress </td>';
...假设您希望在In Progress
不是column
或Duration
时说Size
。
请注意,使用此逻辑,永远不会到达最后一个else
,因此可以将其删除。
此外,问题可以更明确,因为我不确定你想要实现的目标。
答案 3 :(得分:0)
您需要删除一些parens或添加一些parens,以便($column == 'Duration') && ($column =='Size')
成为(($column == 'Duration') && ($column =='Size'))
或($column == 'Duration' && $column =='Size')
但是你有一个更大的问题,请参阅R. Bemrose对你的问题的评论。
答案 4 :(得分:0)
您可能正在寻找带有或的东西。比如column ='blah'或column ='blah2'。
else if ($column == 'Duration' || $column =='Size')