П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 3439 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 5995 раз(а).

Учебник HTML.
Просмотров 3220 раз(а).

Руководство по PHP5.
Просмотров 5442 раз(а).

Хостинг через призму DNS.
Просмотров 4050 раз(а).

Подборка текстов стандартных документов.
Просмотров 55723 раз(а).

Учебник PHP - Самоучитель
Просмотров 3020 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 4810 раз(а).

Внешние атаки...
Просмотров 3759 раз(а).

Учебник PHP.
Просмотров 2782 раз(а).

SSI в примерах.
Просмотров 37396 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Учебник РНР
Назад Глава 11. Структуры Управления Вперёд

switch

Оператор switch напоминает выполнение серии операторов IF над одним выражением. Во многих случаях вам нужно будет сравнить одну переменную (или выражение) с различными значениями и выполнить разные участки кода в зависимости от того, каково значение. Именно это поможет сделать оператор switch.

Следующие два примера это два способа записи одного и того же: в первом используется серия операторов if, во втором - оператор switch:

if ($i == 0) {
    print "i equals 0";
}
if ($i == 1) {
    print "i equals 1";
}
if ($i == 2) {
    print "i equals 2";
}

switch ($i) {
    case 0:
        print "i equals 0";
        break;
    case 1:
        print "i equals 1";
        break;
    case 2:
        print "i equals 2";
        break;
}

Важно понять, как выполняется оператор switch, чтобы исключить ошибки. Оператор switch выполняется построчно (фактически - оператор за оператором). В начале никакой код не выполняется. Только когда будет найден оператор case со значением, совпадающим со значением выражения switch, PHP начнёт выполнять операторы. PHP продолжает выполнение операторов до конца блока switch или до первого оператора break. Если вы не запишете операторы break в конце оператора case в списке, PHP будет выполнять операторы следующего case. Например:

switch ($i) {
    case 0:
        print "i equals 0";
    case 1:
        print "i equals 1";
    case 2:
        print "i equals 2";
}

Здесь, если $i равно 0, PHP выполнит все операторы print! Если $i равно 1, PHP выполнит последние два оператора print, и только если $i равно 2, вы получите 'ожидаемое' поведение, и будет выведено только 'i equals 2'. Итак, важно не забывать записывать операторы break (хотя это может и не понадобиться при некоторых обстоятельствах).

В операторе switch условие вычисляется только один раз, а результат сравнивается с каждым оператором case. В операторе elseif условие вычисляется повторно. Если ваше условие сложнее, чем простое сравнение "и/или" в небольшом цикле, оператор switch может сработать быстрее.

Список операторов в case может также быть пустым, что просто передаёт управление в список операторов следующего case.

switch ($i) {
    case 0:
    case 1:
    case 2:
        print "i is less than 3 but not negative";
        break;
    case 3:
        print "i is 3";
}

Особый случай - default case (case по умолчанию). Этот case совпадёт со всем, с чем не совпали все предыдущие case, и должен быть самым последним case. Например:

switch ($i) {
    case 0:
        print "i equals 0";
        break;
    case 1:
        print "i equals 1";
        break;
    case 2:
        print "i equals 2";
        break;
    default:
        print "i is not equal to 0, 1 or 2";
}

Выражением case может быть любое выражение, которое вычисляется в простой тип, то есть целое число, число с плавающей точкой или строка. Массивы или объекты не могут использоваться здесь, если только они не разыменовываются в простой тип.

Альтернативный синтаксис структур управления поддерживается в switch. Дополнительно см. Альтернативный синтаксис структур управления.

switch ($i):
    case 0:
        print "i equals 0";
        break;
    case 1:
        print "i equals 1";
        break;
    case 2:
        print "i equals 2";
        break;
    default:
        print "i is not equal to 0, 1 or 2";
endswitch;

Назад ОглавлениеВперёд
continueВверхdeclare


Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru