在PHP中有没有更有效的方法?

在PHP中有没有更有效的方法?,php,Php,首先,很抱歉这个标题,我不知道如何描述我的问题 我有以下代码(简化) if($red&&$italic) 回声“; 埃尔塞夫(斜体) 回声“; 埃尔塞夫(红色) 回声“; 其他的 回声“; 有没有办法简化这一点,即不使用8行?我知道这并不重要,但我想知道这是否可能 谢谢 是的,你可以“简化”它 echo' 如果您不担心发送一个空类,则可以缩小: echo' 如果你愿意,你可以在一行中编写整个应用程序。但是你应该吗?可读性非常重要 如果您希望重写代码以减少重复,那么有很多选项 此方法的行数与原始

首先,很抱歉这个标题,我不知道如何描述我的问题

我有以下代码(简化)

if($red&&$italic)
回声“;
埃尔塞夫(斜体)
回声“;
埃尔塞夫(红色)
回声“;
其他的
回声“;
有没有办法简化这一点,即不使用8行?我知道这并不重要,但我想知道这是否可能

谢谢

是的,你可以“简化”它

echo'

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

echo'

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

如果您希望重写代码以减少重复,那么有很多选项

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

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

您可以使用开关

$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.
}
$type='iandr';
交换机($类型){
案例iandr:
回声';
打破
案例一:
回声';
打破
案例r:
回声';
打破
违约:
如果$type与上述情况不同,则在此执行代码。
}

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

@HawasKaPujaari不,它不需要空格:@Rizier123 ugghh-okayyys.:但是你应该吗?砰+(一)我以前想过这一行,但如果
$italic
是真的,那么生成的代码将是
class=“italic”
,这不是一个大问题。当然,可读性是最重要的。当有多个类时,使用foreach的方法非常有用。我没有想到
join()
,我对PHP不太熟悉。谢谢好像我从来没有接受过这个答案,对不起!OP显然想减少线路数量。是的,我知道,但这被认为是更整洁的方法。你不同意吗?我知道这更整洁,但这不是我想要的。谢谢你!
$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.
}