如何遍历转换矩阵

时间:2016-09-07 21:40:39

标签: php if-statement data-structures

我有一个5X5的转换矩阵。基本上旧州进入新州。我已经设置了以下if语句块但是想知道是否有更优雅的解决方案:

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"){


}

1 个答案:

答案 0 :(得分: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
}

如果有新的选项

,将来会让它变得更漂亮,更容易管理