首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php太多if else语句

php太多if else语句
EN

Stack Overflow用户
提问于 2016-04-16 03:47:05
回答 5查看 1.4K关注 0票数 1

我有下面的php代码:

代码语言:javascript
复制
if($ptp_car_1 == "ptp_Denpasar_Ubud_fee_".$way."_car_1"){
        $ptp_car_1 = "ptp_Ubud_Denpasar_fee_".$way."_car_1";
    }
    if($ptp_car_1 == "ptp_Denpasar_Tanah_Lot_fee_".$way."_car_1"){
        $ptp_car_1 = "ptp_Tanah_Lot_Denpasar_fee_".$way."_car_1";
    }
    if($ptp_car_1 == "ptp_Denpasar_Sanur_fee_".$way."_car_1"){
        $ptp_car_1 = "ptp_Sanur_Denpasar_fee_".$way."_car_1";
    }
    if($ptp_car_1 == "ptp_Denpasar_Seminyak_fee_".$way."_car_1"){
        $ptp_car_1 = "ptp_Seminyak_Denpasar_fee_".$way."_car_1";
    }
    if($ptp_car_1 == "ptp_Denpasar_Kuta_fee_".$way."_car_1"){
        $ptp_car_1 = "ptp_Kuta_Denpasar_fee_".$way."_car_1";
    }
    if($ptp_car_1 == "ptp_Denpasar_Jimbaran_fee_".$way."_car_1"){
        $ptp_car_1 = "ptp_Jimbaran_Denpasar_fee_".$way."_car_1";
    }
    if($ptp_car_1 == "ptp_Denpasar_Nusa_Dua_fee_".$way."_car_1"){
        $ptp_car_1 = "ptp_Nusa_Dua_Denpasar_fee_".$way."_car_1";
    }
// many code over 1,000

我如何优化它?我希望页面运行得更快,现在太慢了。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-04-16 04:08:03

在这种情况下,开关的情况应该更好。

经历这个..。

Why the switch statement and not if-else?

Is "else if" faster than "switch() case"?

试试看,

代码语言:javascript
复制
switch ($ptp_car_1){   
        case "ptp_Denpasar_Ubud_fee_".$way."_car_1":
        {
             $ptp_car_1 = "ptp_Ubud_Denpasar_fee_".$way."_car_1";
        }
        break;
        case "ptp_Denpasar_Tanah_Lot_fee_".$way."_car_1":
        {
             $ptp_car_1 = "ptp_Tanah_Lot_Denpasar_fee_".$way."_car_1";
        }
        break;
        case "ptp_Denpasar_Sanur_fee_".$way."_car_1":
        {
             $ptp_car_1 = "ptp_Sanur_Denpasar_fee_".$way."_car_1";
        }
        break;
        case "ptp_Denpasar_Seminyak_fee_".$way."_car_1":
        {
             $ptp_car_1 = "ptp_Seminyak_Denpasar_fee_".$way."_car_1";
        }
        break;
        case "ptp_Denpasar_Kuta_fee_".$way."_car_1":
        {
             $ptp_car_1 = "ptp_Kuta_Denpasar_fee_".$way."_car_1";
        }
        break;
        case "ptp_Denpasar_Jimbaran_fee_".$way."_car_1":
        {
             $ptp_car_1 = "ptp_Jimbaran_Denpasar_fee_".$way."_car_1";
        }
        break;
        case "ptp_Denpasar_Nusa_Dua_fee_".$way."_car_1":
        {
             $ptp_car_1 = "ptp_Nusa_Dua_Denpasar_fee_".$way."_car_1";
        }
        break;

        /*
        //OPTIONAL

        default:
            $ptp_car_1 = $ptp_car_1;

        */   


    }
票数 0
EN

Stack Overflow用户

发布于 2016-04-16 07:57:15

只要其他1000+字符串遵循相同的模式,此函数将直接转换字符串。

代码语言:javascript
复制
// reorder parts if the following pattern is true for all entries
//
// starts with "ptp" (store as group 1)
// then contains an '_'
// then has at least 1 char that is not an '_' (store as group 2)
// then contains an '_'
// then contains at least 1 char that is not '_fee_' (store as group 3)
// then contains an '_'
// then contains any number of chars (store as group 4)
//
// group 4 will contain 'fee_', $way and '_car_1' but we really don't need to care what
// those chars are, they just get tacked on to the end.
// 
// Once the original is broken up, parts 2 & 3 are swapped and the 
// results are imploded into the desired string with '_' separators.
//
function swapPtpParts($ptp_car_1) {
    $matches = [];
    if(preg_match("/(ptp)_([^_]+)_(.+?(?=_fee_))_(.*)/", $ptp_car_1, $matches)) {
        $parts = [
            $matches[1],
            $matches[3],
            $matches[2],
            $matches[4],
        ];
        return implode('_', $parts);
    }
    return $ptp_car_1;    
}

用法:

代码语言:javascript
复制
$ptp_car_1 = swapPtpParts($ptp_car_1);
票数 4
EN

Stack Overflow用户

发布于 2016-04-16 03:54:41

如果如下所示,请使用其他方法:

代码语言:javascript
复制
if($ptp_car_1 == "ptp_Denpasar_Ubud_fee_".$way."_car_1"){
    $ptp_car_1 = "ptp_Ubud_Denpasar_fee_".$way."_car_1";
}
elseif($ptp_car_1 == "ptp_Denpasar_Tanah_Lot_fee_".$way."_car_1"){
    $ptp_car_1 = "ptp_Tanah_Lot_Denpasar_fee_".$way."_car_1";
}
elseif($ptp_car_1 == "ptp_Denpasar_Sanur_fee_".$way."_car_1"){
    $ptp_car_1 = "ptp_Sanur_Denpasar_fee_".$way."_car_1";
}
elseif($ptp_car_1 == "ptp_Denpasar_Seminyak_fee_".$way."_car_1"){
    $ptp_car_1 = "ptp_Seminyak_Denpasar_fee_".$way."_car_1";
}
elseif($ptp_car_1 == "ptp_Denpasar_Kuta_fee_".$way."_car_1"){
    $ptp_car_1 = "ptp_Kuta_Denpasar_fee_".$way."_car_1";
}
elseif($ptp_car_1 == "ptp_Denpasar_Jimbaran_fee_".$way."_car_1"){
    $ptp_car_1 = "ptp_Jimbaran_Denpasar_fee_".$way."_car_1";
}
elseif($ptp_car_1 == "ptp_Denpasar_Nusa_Dua_fee_".$way."_car_1"){
    $ptp_car_1 = "ptp_Nusa_Dua_Denpasar_fee_".$way."_car_1";
}

这样会更快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36659880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档