2016-04-16 5 views
0

ich PHP-Code haben, wie unten:php zu viele, wenn else-Anweisung

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 

Wie kann ich es optimieren? Ich möchte die Seite schneller laufen lassen, jetzt ist es zu langsam dafür.

+0

eine switch-Anweisung versuchen (http://php.net/manual/en/control-structures.switch.php) – gavgrif

+1

Sie sollten eine Funktion tun, dass die beiden Swaps Teile der Zeichenfolgen, die sich ändern und dann brauchst du keine if/else – Rasclatt

Antwort

0

In diesem Fall sollte SWITCH CASE besser sein.

dieses durchmachen ...

Why the switch statement and not if-else?

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

einen Versuch diese geben,

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

Verwenden else if wie unten:

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

Es wäre schneller.

+2

* Ändere es in 'echo" done ";' noch schneller! * Es ist nutzlos, nur die Absicht eines Codes zu ändern, um ihn schneller zu machen – Rizier123

0

ich nicht alle 1000, wenn Aussagen gesehen, aber wenn die patten hält, können Sie eine Funktion verwenden, die den Text für Sie ersetzt. Nach wie vor:

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

Und wie so verwenden:

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

Wie wäre Array?

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

Diese Funktion konvertiert die Strings direkt, solange die anderen 1000+ Strings demselben Muster folgen.

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

Verbrauch:

$ptp_car_1 = swapPtpParts($ptp_car_1);