Оглавление

19.3. Оператор ? Проверка числа на четность

Оператор ? имеет следующий формат:
<Переменная> = (<Логическое выражение>) ? <Выражение если Истина> : 
<Выражение если Ложь>;

 

Перепишем нашу программу (листинг 32) и используем оператор ? вместо  if…else (листинг 34).

 
Листинг 34. Использование оператора ?

<b>Проверка числа на четность</b><br><br>
Введите число<br>
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>">
<input type="text" name="var">
<input type="submit" value="OK">
</form><br>
<?php
if (isset($_GET['var'])) {
   $var = $_GET['var'];
   if (preg_match('/^[0-9]+$/s', $var)) {
      // Преобразуем тип string (строка) в integer (число)
      $var = intval($var);
      echo ($var%2 == 0) ? $var . ' - Четное число'
                         : $var . ' - Нечетное число';
   }
   else echo 'Необходимо ввести число';
}
?>

 

Рассмотрим еще один пример. Предположим необходимо вывести сообщение при возникновении определенного условия. Если попробовать вывести так

$var = 5;
($var == 5) ? echo 'Равно' : echo 'Не равно'; // Ошибка


то возникнет ошибка. Обойти эту ошибку можно способом, который мы рассмотрели в листинге 5.34, или вместо оператора echo использовать оператор print:

$var = 5;
($var == 5) ? print 'Равно' : print 'Не равно';

 

 

Начиная с PHP 5.3 средний параметр можно не указывать:

$var = $_GET['var'] ? : 'Значение по умолчанию';
echo $var;

 

Если  переменная  $_GET['var']  не  существует,  то  переменная  $var  будет иметь  значение "Значение  по  умолчанию",  а  если  определена,  то  значение переменной $var будет равно значению переменной $_GET['var']. Такая короткая запись эквивалентна следующему коду:

$var = $_GET['var'] ? $_GET['var'] : 'Значение по умолчанию';
echo $var;


При использовании короткой записи следует иметь в виду то, что если переменная не существует, будет выведено предупреждающее сообщение:


Notice: Undefined index: var

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити