在PHP中是否有更有效的方法


Is there any way to do this more efficiently in PHP?

首先,对不起,我不知道如何描述我的问题。

我有以下一段代码(简化):

if ($red && $italic)
    echo "<tr class='red italic'>";
elseif ($italic)
    echo "<tr class='italic'>";
elseif ($red)
    echo "<tr class='red'>";
else
    echo "<tr>";

是否有一种方法可以简化这一点,即不使用8行?我知道这不是很重要,但我想知道是否有可能。

谢谢!

是的,你可以"简化"它。

echo '<tr' . ($red || $italic ? ' class="' . ($red ? 'red' : '') . ($italic ? ' italic' : '') . '"' : '') . '>';

如果你不担心发送一个空类,这可以缩小:

echo '<tr class="' . ($red ? 'red' : '') . ($italic ? ' italic' : '') . '">';

如果你愿意,你可以在一行中编写整个应用程序。但你应该这样做吗?可读性非常重要。

如果你想重写你的代码,让它看起来不那么重复,有很多选择。

此方法与原始方法的行数相同,但允许您通过更改其中一部分轻松添加另一个类

$classes = array('red', 'italic');
$used_classes = array();
foreach ($classes as $class) {
    if ($$class) {
        $used_classes[] = $class;
    }
}
echo '<tr class="' . join(' ', $used_classes) . '">';

你可以用一个开关

$type = 'iandr';
switch ($type) {
    case iandr:
        echo'<tr class="red italic">';
       break;
    case i:
        echo'<tr class="italic">';
       break;
    case r:
        echo'<tr class="red">';
       break;
    default:
        code to be executed here if $type is different to the above cases.
}

我个人更喜欢使用开关而不是if和else语句。