if ($names[0]=='Иван') {
// если первое имя в массиве Иван
echo 'Привет, Ваня!';
}elseif ($names[0] == 'Петр'){
// если первое имя
// не Иван, а Петр
echo 'Привет, Петя!';
}elseif ($names[0] == 'Семен'){
// если первое имя не
// Иван, не Петр, а Семен
echo 'Привет, Сеня!';
}else {
// если первое имя не Иван,
// не Петр и не Семен
echo 'Привет, $names[0]. А ты кто такой?';
}
?>
PHP предлагает альтернативный синтаксис для некоторых своих управляющих структур, а именно для if, while, for, foreach и switch. В каждом случае открывающую скобку нужно заменить на двоеточие (:), а закрывающую – на endif;, endwhile; и т.д. соответственно.
Например, синтаксис оператора if можно записать таким образом:
if(выражение): блок_выполнения endif;
Смысл остается тем же: если условие, записанное в круглых скобках оператора if, оказалось истиной, будет выполняться весь код, от двоеточия «:» до команды endif;. Использование такого синтаксиса полезно при встраивании php в html-код.
<?php
$names = array('Иван','Петр','Семен');
if ($names[0]=='Иван'):
?>
Привет, Ваня!
<?php endif ?>
Если используются конструкции else и elseif, то также можно задействовать альтернативный синтаксис:
<?php
if ($a == 5):
print 'a равно 5';
print '...';
elseif ($a == 6):
print 'a равно 6';
print '!!!';
else:
print 'a не равно ни 5, ни 6';
endif;
?>
Еще одна конструкция, позволяющая проверять условие и выполнять в зависимости от этого различные действия, – это switch. На русский язык название данного оператора можно перевести как «переключатель». И смысл у него именно такой. В зависимости от того, какое значение имеет переменная, он переключается между различными блоками действия. switch очень похож на оператор if...elseif...else или набор операторов if. Структуру switch можно записать следующим образом:
switch (выражение или переменная){
case значение1:
блок_действий1
break;
case значение2:
блок_действий2
break;
...
default:
блок_действий_по_умолчанию
}
В отличие от if, здесь значение выражения не приводится к логическому типу, а просто сравнивается со значениями, перечисленными после ключевых слов case (значение1, значение 2 и т.д.). Если значение выражения совпало с каким-то вариантом, то выполняется соответствующий блок_действий – от двоеточия после совпавшего значения до конца switch или до первого оператора break, если таковой найдется. Если значение выражения не совпало ни с одним из вариантов, то выполняются действия по умолчанию (блок_действий_по_умолчанию), находящиеся после ключевого слова default. Выражение в switch вычисляется только один раз, а в операторе elseif – каждый раз, поэтому, если выражение достаточно сложное, то switch работает быстрее.
Пример 3.3 можно переписать с использованием switch следующим образом:
<?
$names = array('Иван','Петр','Семен');
switch ($names[0]){
case 'Иван':
echo 'Привет, Ваня!';
break;
case 'Петр':
echo 'Привет, Петя!';
break;
case 'Семен':
echo 'Привет, Сеня!';
break;
default:
echo 'Привет, $names[0].
А как Вас зовут?';
}
?>