2016-09-07 3 views
0

У меня есть матрица перехода 5X5. В основном старое государство переходит в новое состояние. Я настроил следующее, если блок операторов, но было интересно, если есть более элегантное решение:Как пересечь матрицу перехода

if(($oldStatus[$i] == "OUT" || $oldStatus[$i]=="OPEN") && $newStatus[$i] == "OUT"){ 
    $email[$i] = false; 
    $crw [$i] = 'OUT'; 
    $sort [$i] = 9; 
}else if (($oldStatus[$i]=="OUT" || $oldStatus[$i]=="OPEN") && $newStatus[$i]=="CONFIRMED"){ 


}else if (($oldStatus[$i]=="OUT" || $oldStatus[$i]=="OPEN") && $newStatus[$i]=="WAITLIST"){ 


}else if (($oldStatus[$i]=="OUT" || $oldStatus[$i]=="OPEN") && $newStatus[$i]=="FLEXOPEN"){ 


}else if (($oldStatus[$i]=="OUT" || $oldStatus[$i]=="OPEN") && $newStatus[$i]=="FLEXCLOSE"){ 


}else if ($oldStatus[$i]=="CONFIRMED" && $newStatus[$i]=="OUT"){ 


}else if ($oldStatus[$i]=="CONFIRMED" && $newStatus[$i]=="CONFIRMED"){ 


}else if ($oldStatus[$i]=="CONFIRMED" && $newStatus[$i]=="WAITLIST"){ 


}else if ($oldStatus[$i]=="CONFIRMED" && $newStatus[$i]=="FLEXOPEN"){ 


}else if ($oldStatus[$i]=="CONFIRMED" && $newStatus[$i]=="FLEXCLOSE"){ 


}else if ($oldStatus[$i]=="WAITLIST" && $newStatus[$i]=="OUT"){ 


}else if ($oldStatus[$i]=="WAITLIST" && $newStatus[$i]=="CONFIRMED"){ 


}else if ($oldStatus[$i]=="WAITLIST" && $newStatus[$i]=="WAITLIST"){ 


}else if ($oldStatus[$i]=="WAITLIST" && $newStatus[$i]=="FLEXOPEN"){ 


}else if ($oldStatus[$i]=="WAITLIST" && $newStatus[$i]=="FLEXCLOSE"){ 


}else if ($oldStatus[$i]=="FLEXOPEN" && $newStatus[$i]=="OUT"){ 


}else if ($oldStatus[$i]=="FLEXOPEN" && $newStatus[$i]=="CONFIRMED"){ 


}else if ($oldStatus[$i]=="FLEXOPEN" && $newStatus[$i]=="WAITLIST"){ 


}else if ($oldStatus[$i]=="FLEXOPEN" && $newStatus[$i]=="FLEXOPEN"){ 


}else if ($oldStatus[$i]=="FLEXOPEN" && $newStatus[$i]=="FLEXCLOSE"){ 


}else if ($oldStatus[$i]=="FLEXCLOSE" && $newStatus[$i]=="OUT"){ 


}else if ($oldStatus[$i]=="FLEXCLOSE" && $newStatus[$i]=="CONFIRMED"){ 


}else if ($oldStatus[$i]=="FLEXCLOSE" && $newStatus[$i]=="WAITLIST"){ 


}else if ($oldStatus[$i]=="FLEXCLOSE" && $newStatus[$i]=="FLEXOPEN"){ 


}else if ($oldStatus[$i]=="FLEXCLOSE" && $newStatus[$i]=="FLEXCLOSE"){ 


} 
+0

купить внешний вид, который вы можете использовать 'in_array()' – nogad

ответ

1

Вы можете управлять через переключатели ... что-то вроде

switch($oldStatus[$i]) { 
    case 'OPEN': 
    case 'OUT': 
     switch($newStatus[$i]) { 
      case 'CONFIRMED': 
       //do something here 
      break; 
      case 'WAITLIST' { 
       //do something else here 
      break; 
     } 
    break; 
    case 'CONFIRMED': 
     switch($newStatus[$i]) { 
      case 'CONFIRMED': 
       //do something here 
      break; 
      case 'WAITLIST' { 
       //do something else here 
      break; 
      //do the rest of the new cases here 
     } 
    break; 
    //do the rest of the old cases just like above here 
} 

делает его немного симпатичнее и легче управлять в будущем, если есть новые опции

Смежные вопросы