首先,抱歉标题,我不知道如何描述我的问题。
我有以下代码(简化)。
if ($red && $italic)
echo "<tr class='red italic'>";
elseif ($italic)
echo "<tr class='italic'>";
elseif ($red)
echo "<tr class='red'>";
else
echo "<tr>";
有没有办法简化这一点,即不使用8行?我知道这不是很重要,但我想知道是否可能。
谢谢!
答案 0 :(得分:2)
是的,你可以“简化”它。
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) . '">';
答案 1 :(得分:0)
您可以使用开关。
$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语句。