Php 如果$variable为“string”,则回显“stri”?

Php 如果$variable为“string”,则回显“stri”?,php,html,Php,Html,我试图根据表中输出的字符串为表td创建一个类 <?php echo '<td class="'?> <?php if ($day === 'monday') echo 'mon'; if ($day === 'tuesday') echo 'tues'; ?> <?php echo '">' . $day . '</td>' 但是,这会导致以下结果: <td class>

我试图根据表中输出的字符串为表td创建一个类

<?php echo '<td class="'?>

<?php 
    if ($day === 'monday') 
        echo 'mon';
    if ($day === 'tuesday') 
        echo 'tues';
?>

<?php echo '">' . $day . '</td>'
但是,这会导致以下结果:

<td class>monday</td>
我正努力做到这一点:

<td class="mon">monday</td>
<td class="tues">tuesday</td>

知道我做错了什么吗?

我建议事先决定类,以使代码更具可读性

<?php
    $class = '';

    if ($day === 'monday') {
        $class = 'mon';
    } else if ($day === 'tuesday') {
        $class = 'tues';
    }
?>

<td class="<?= $class ?>"><?= $day ?></td>

更好的方法是使用switch语句:

$day = 'tuesday';
switch ($day) {
    case 'monday':
        $shortDay = 'mon';
        break;
    case 'tuesday':
        $shortDay = 'tues';
        break;
    default:
        $shortDay = 'invalid';
}
echo '<td class="' . $shortDay . '">' . $day . '</td>';

将条件与标记分开-使其不易出错、可维护

<?php 
   $shortday = '';
   if ($day === 'monday') 
      $shortday = 'mon';
   else if($day === 'tuesday')
      $shortday = 'tues';
   else if...

   echo "<td class=\"$shortday\">$day</td>";

?>

我喜欢xbonez和codingbiz的答案,但如果您访问样式表并可以对其进行更改,您可以重命名这些类,以便使用当天的前3个字母调用它们,然后:

echo ('<td class="' . substr($day, 0, 3) . '">' . $day . '</td>');

用代码中每一行的值创建一个数组。然后循环通过它们。这将是最干净的方法。这也是一个很好的做法,如果你想有更多的价值,预先知道的项目,如也许天的一个月

$days = array( 'mon' => 'monday',
               'tue' => 'tuesday',
               'wed' => 'wednesday'
             );

foreach($days as $k => $v) {
    echo '<td class="' . $k . '">' . $v . '</td>';
}

谢谢你的回复。对不起,是的,那是一个打字错误,我现在已经改正了,但仍然遇到同样的问题。虽然更好,但这里不需要其他的。@Jack你是什么意思?如果没有else,则该语法无效if@sachleen他的代码只有两个独立的if语句;我看不到无效语法。@Jack哦,你说得对,我一定是在将它拆分为多行时删除了它。你的最终echo语句需要字符串concat或类值周围的单引号。用什么连接?我不知道在哪里?你现在修好了。您以前的版本已被破坏。您是否确保$day实际上是“星期一”或“星期二”?如果您可以控制css,您可以将类更改为mon和tue,这样,类值将为,并且您将不需要任何If-else。天哪,新鞋磨损了!我能得到一个至少看起来可以维护的答案吗?这是正确的。如果未启用