首先,对不起,我不知道如何描述我的问题。
我有以下一段代码(简化):
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语句。