Intereting Posts
require_once и include_once не разрешают файлы правильно добавление символа для всех элементов массива ap art из последнего использования для / foreach PHP Функция по умолчанию Значения параметров, как «передать значение по умолчанию» для «не последних» параметров? логин с завитком и сеанс PHP mysql_stmt :: fetch () дает устаревшую память ошибок PHP Получение информации из массива внутри массива (php) PHP-фронт-контроллер без необходимости жесткого кодирования baseroot substr_count не работает с новыми строками? SimpleXML: добавить одно дерево к другому php mysql fulltext search: lucene, sphinx, или? PHP: почему моя дата сформирована на сервере по-разному? хэш-файлы css и js, чтобы разбить кеш. Это медленно? Ручное преобразование ответа XML SOAP в массив PHP Google app-engine – загруженные файлы не являются общедоступными в облачном хранилище Google Санитация регулярных выражений, добавленных пользователем в PHP

PHP: можно ли переходить из одного случая в другой внутри коммутатора?

У меня есть переключатель, где в очень редких случаях мне, возможно, придется перейти к другому делу, я ищу что-то вроде этого:

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