写这些if语句的更好方法? [关闭]

问题描述 投票:0回答:1

在不使用太多新的链接变量和if语句的情况下,编写此代码的更好方法是什么?机箱开关在这里可以工作吗?我能否将每个变量都增加为带有+1的新变量,而不是每次都有新变量?试图提出更短的清洁代码。您将不得不忽略一些变量,因为其中大部分是来自更大的代码,这只是我正在研究的一小部分。这只会为页面上不同名称的背景设置样式。

foreach ($value->alldetails as $details) {
    $name = $details->name;
    $title = $value->title;
    $link1 = '<div style="background-color:#f4eb12;"><a href="./setup/'.$id.'" target="_blank">'.$name.' '.$a_time.'</a></div>';                
    $link2 = '<div style="background-color:#f7951d;"><a href="./setup/'.$id.'" target="_blank">'.$name.' '.$a_time.'</a></div>';                
    $link3 = '<div style="background-color:#f7951d;"><a href="./setup/'.$id.'" target="_blank">'.$name.' '.$a_time.'</a></div>';                
    $link4 = '<div style="background-color:#00ffff;"><a href="./setup/'.$id.'" target="_blank">'.$name.' '.$a_time.'</a></div>';                
    $link5 = '<div style="background-color:#6a52a2;"><a href="./setup/'.$id.'" target="_blank">'.$name.' '.$a_time.'</a></div>';                
    $link6 = '<div style="background-color:#44b649;"><a href="./setup/'.$id.'" target="_blank">'.$name.' '.$a_time.'</a></div>';                
    $link7 = '<div style="background-color:#e22627;"><a href="./setup/'.$id.'" target="_blank">'.$name.' '.$a_time.'</a></div>';                
    $link8 = '<div style="background-color:#1670b8;"><a href="./setup/'.$id.'" target="_blank">'.$name.' '.$a_time.'</a></div>';
    $link9 = '<div style="background-color:#1670b8;"><a href="./setup/'.$id.'" target="_blank">'.$name.' '.$a_time.'</a></div>';
    $link10 = '<div style="background-color:#1670b8;"><a href="./setup/'.$id.'" target="_blank">'.$name.' '.$a_time.'</a></div>';
    if (!$details->soldout && $title === "Name1 1:00 PM") {
        $cellLink .=  $link1;
    }
    if (!$details->soldout && $title === "Name 10:00 AM") {
        $cellLink .=  $link2;
    }
    if (!$details->soldout && $title === "Name 2:30 PM") {
        $cellLink .=  $link3;
    }
    if (!$details->soldout && $title === "Name2 1:00 PM") {
        $cellLink .=  $link4;
    }
    if (!$details->soldout && $title === "Name 6:00 PM") {
        $cellLink .=  $link5;
    }
    if (!$details->soldout && $title === "Name1 10:00 AM") {
        $cellLink .=  $link6;
    }
    if (!$details->soldout && $title === "Name2 10:00 AM") {
        $cellLink .=  $link7;
    }
    if (!$details->soldout && $title === "Name 3:00 PM") {
        $cellLink .=  $link8;
    }
    if (!$details->soldout && $title === "Name 5:00 PM") {
        $cellLink .=  $link9;
    }
    if (!$details->soldout && $title === "Name 7:00 PM") {
        $cellLink .=  $link10;
    }else{
}
php html css json
1个回答
0
投票

这些链接中所有更改的是颜色。因此,只需计算颜色并将其添加到一个简单的链接变量中,至少可以使代码更易于阅读。

这似乎也适合使用开关而不是所有的IF

foreach ($value->alldetails as $details) {
    $name = $details->name;
    $title = $value->title;

    if (!$details->soldout) {

        switch ($value->title) {
            case: "Name1 1:00 PM"
                $clr = '#f4eb12';
                break;

            case: "Name 10:00 AM"
                $clr = '#f7951d';
                break;

            . . . etc etc 

            default:
                $clr = 'Set a default here';

        } // end switch

        $link = "<div style='background-color:$clr;'>
                    <a href='./setup/$id' target='_blank'>$name $a_time</a>
                </div>";

        // an echo I assume
    } // endif
} // endforeach
© www.soinside.com 2019 - 2024. All rights reserved.