You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简化为传入参数指定的第n个元素添加active类的代码?

优化分步流程渲染函数的实现方法

我编写了如下draw_process函数:

draw_process( $active_element ) {

    $step1 = $active_element == 1 ? 'active' : '';
    $step2 = $active_element == 2 ? 'active' : '';
    $step3 = $active_element == 3 ? 'active' : '';

    return '<div class="process">
                <div class="' . $step1 . '">Lorem Ipsum</div>
                <div class="' . $step2 . '">Lorem Ipsum</div>
                <div class="' . $step3 . '">Lorem Ipsum</div>
           </div>';
}

请问是否有更简便的方法,为传入函数的参数所指定的第n个元素添加正确的active类?

方法一:循环生成步骤元素

把步骤内容存入数组,通过循环动态渲染每个步骤,后续扩展步骤只需修改数组,无需重复编写判断逻辑:

function draw_process( $active_element ) {
    $steps = ['Lorem Ipsum', 'Lorem Ipsum', 'Lorem Ipsum'];
    $html = '<div class="process">';
    
    foreach ($steps as $index => $content) {
        // 循环索引从0开始,所以加1匹配步骤序号
        $class = ($index + 1 == $active_element) ? 'active' : '';
        $html .= '<div class="' . $class . '">' . $content . '</div>';
    }
    
    $html .= '</div>';
    return $html;
}

方法二:简化变量定义逻辑

如果不想调整结构,可直接把判断逻辑嵌入HTML拼接代码,省去单独定义$step1/$step2/$step3变量的冗余操作:

function draw_process( $active_element ) {
    return '<div class="process">
                <div class="' . ($active_element == 1 ? 'active' : '') . '">Lorem Ipsum</div>
                <div class="' . ($active_element == 2 ? 'active' : '') . '">Lorem Ipsum</div>
                <div class="' . ($active_element == 3 ? 'active' : '') . '">Lorem Ipsum</div>
           </div>';
}

方法三:用HEREDOC提升代码可读性

HEREDOC语法可以避免HTML字符串转义引号的麻烦,让代码结构更直观,结合循环使用体验更好:

function draw_process( $active_element ) {
    $steps = ['Lorem Ipsum', 'Lorem Ipsum', 'Lorem Ipsum'];
    
    $html = <<<HTML
<div class="process">
HTML;

    foreach ($steps as $index => $content) {
        $class = ($index + 1 == $active_element) ? 'active' : '';
        $html .= <<<HTML
    <div class="$class">$content</div>
HTML;
    }

    $html .= <<<HTML
</div>
HTML;
    return $html;
}

内容的提问来源于stack exchange,提问作者stephan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 11:15:14