2016-04-16 6 views
0

У меня есть код PHP, как показано ниже:PHP слишком много, если другое заявление

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 

Как оптимизировать его? Я хочу, чтобы страница работала быстрее, теперь она слишком медленная.

+0

попробуйте переключатель заявление (http://php.net/manual/en/control-structures.switch.php) – gavgrif

+1

Вы должны сделать функцию, которая меняет местами два части строк, которые меняются, а затем вам не нужно, если/else – Rasclatt

ответ

0

В этом случае SWITCH CASE должен быть лучше.

пройти через это ...

Why the switch statement and not if-else?

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

дать попробовать на это,

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

Используйте еще, если, как показано ниже:

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"; 
} 

Было бы быстрее.

+2

* Измените его на 'echo" done ";' еще быстрее! * Простое изменение кода, чтобы сделать его быстрее, бесполезно – Rizier123

0

Я не видел все 1000, если заявления, но если Паттен Вы можете использовать функцию, которая заменяет текст для вас. Как и раньше:

function convertDenpansarFeeString($ptp_car, $way) 
{ 
    // number of characters in ptp_Denpasar_ = 13 
    // number of characters in _car_ = 5 
    return "ptp_" 
     . substr($ptp_car 
      , 13 
      , strpos($ptp_car, "_fee_") - 13 
     ) 
     . "_Denpasar_fee_" 
     . $way 
     . "_car_" 
     . substr($ptp_car 
      , strpos($ptp_car, "_car_") + 5 
     ); 
} 

И использовать так:

$ptp_car1 = convertDenpansarFeeString($ptp_car1, $way); 
$ptp_car2 = convertDenpansarFeeString($ptp_car2, $way); 
0

Как насчет использования массива?

function getResult($key){ 
    $way = 'hello'; 
    $array = [ 
     'ptp_Denpasar_Ubud_fee_'.$way.'_car_1' => "ptp_Ubud_Denpasar_fee_".$way."_car_1", 
     "ptp_Denpasar_Tanah_Lot_fee_".$way."_car_1" => "ptp_Sanur_Denpasar_fee_".$way."_car_1", 
    ]; 
    return $array[$key]; 
} 

echo getResult('ptp_Denpasar_Ubud_fee_hello_car_1'); 
3

Эта функция будет напрямую преобразовывать строки, если другие 1000+ строк следуют одному и тому же шаблону.

// 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;  
} 

Использование:

$ptp_car_1 = swapPtpParts($ptp_car_1); 
Смежные вопросы