2010-10-22 3 views
0

Нужна помощь в переработке этого PHP-кода/логики. Прямо сейчас, если у меня нет значения ни для столбца «Длительность», ни «Размер», моя таблица html пуста, и я ставлю значение по умолчанию n/a.help with php AND condition

Я хочу изменить логику, чтобы продолжить обрабатывать это условие и дать значение n/a, но также добавить логику для чтения, если ОБА n/a, а затем установите значение моего столбца «Состояние» = «Выполняется».

Как-то, мой прокомментированный код не работает правильно. Благодарю.

 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>'; 
     } 
    } 
+2

'} ElseIf ($ колонке == 'Продолжительность') && ($ столбец == 'Размер') {' <- - Это никогда не будет работать, потому что '$ column' не может иметь два значения одновременно. – Powerlord

+0

Я не уверен, как '$ column == 'Duration'' будет определять погоду, или нет столбца с названием« Duration »имеет значение или нет, я думаю, вам нужно переформулировать вашу проблему и опубликовать другой код, мы можем видеть контекст. – UnkwnTech

+0

Я добавил другой код, чтобы лучше понять его. – cjd143SD

ответ

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>'; 
} 
0

Закомментированный из кода должен быть:

} elseif (($column != 'Duration') && ($column != 'Size')) { 
    echo '<td> In Progress </td>'; 

... если вы хотите сказать In Progress когда column не Duration или Size.

Обратите внимание, что с этой логикой последний else никогда не будет достигнут, поэтому его можно просто удалить.

Кроме того, вопрос может быть уточнен, так как я не уверен точно, чего вы пытаетесь достичь.

0

Вам нужно либо удалить несколько скобок или добавить несколько, так что ($column == 'Duration') && ($column =='Size') становится (($column == 'Duration') && ($column =='Size')) или ($column == 'Duration' && $column =='Size')

Но у вас есть большая проблема, см комментарий Р. Bemrose на ваш вопрос.

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

+1

вы не хотите попасть в тяжелый обстрел, если заявления, когда инструкция switch проще в использовании .... – FatherStorm

0

Вы можете искать что-то с или. Как column = 'blah' или column = 'blah2'.

else if ($column == 'Duration' || $column =='Size')