php重构小功能

时间:2016-08-21 14:53:33

标签: php if-statement refactoring echo

是否可以将此表达式缩减为一行?

    echo '<li>';
    echo $value['name'];
    if ($value['childs']) {
        echo '<ul>';
        echo $this->arrayToString($value['childs']);
        echo '</ul>';
    }
    echo '</li>';

例如:

echo '<li>' . $value['name'] // what to do if statement? ... ;

1 个答案:

答案 0 :(得分:0)

它绝对是可能的:

echo '<li>' . $value['name'] . ($value['childs'] ? '<ul>' . $this->arrayToString($value['childs']) . '</ul>' : '') . '</li>';

但我真的不推荐它。我的可读性会低得多。也许reather尝试将一个部分提取到另一个函数,如下所示:

function printItem($value)
{
    echo '<li>' . $value['name'] . $this->printItemChilds($value) . '</li>';
}

function printItemChilds($value)
{
    return $value['childs'] ? '<ul>' . $this->arrayToString($value['childs']) . '</ul>' : '';
}