У меня есть переключатель, где в очень редких случаях мне, возможно, придется перейти к другому делу, я ищу что-то вроде этого:
switch($var){ case: 'a' if($otherVar != 0){ // Any conditional, it is irrelevant //Go to case y; }else{ //case a } break; case 'b': //case b code break; case 'c': if($otherVar2 != 0){ // Any conditional, it is irrelevant //Go to case y; }else{ //case c } break; . . . case 'x': //case x code break; case 'y': //case y code break; default: // more code break; }
Есть ли опция GOTO, я где-то краснею, но не могу ее найти или, может быть, другое решение? Благодарю.
Вам нужен PHP 5.3 или выше, но здесь:
Вот функциональность goto из http://php.net/manual/en/control-structures.goto.php
<?php $var = 'x'; $otherVar = 1; switch($var){ case 'x': if($otherVar != 0){ // Any conditional, it is irrelevant goto y; }else{ //case X } break; case 'y': y: echo 'reached Y'; break; default: // more code break; } ?>
Как насчет каскадирования (или нет) на основе дополнительного условия?
case 'x' : if ($otherVar == 0) { break; } case 'y' :
Вместо использования каких-либо трюков в swtich-корпусе лучшей логикой может быть следующее.
function func_y() { ... } switch($var){ case: 'x' if($otherVar != 0){ // Any conditional, it is irrelevant func_y(); }else{ //case X } break; case 'y': func_y(); break; default: // more code break; }