к оглавлению

Операторы языка PHP

Операторы выбора/ if...else

К операторам выбора относят: условный оператор (if...else) и переключатель (switch). Синтаксис условного оператора:
if(condition) statement 1 else statement 2

Условие condition может быть любым выражением. Если оно истинно, то выполняется оператор statement 1. В противном случае выполняется оператор statement 2. Допустима сокращенная форма записи условного оператора, в которой отсутствуют else и оператор statement 2.

В свою очередь, операторы statement 1 и statement 2 могут быть условными, что позволяет организовывать цепочки проверок любой глубины вложенности. И в этих цепочках каждый условный оператор может быть как полным, так и сокращенным. В связи с этим возможны ошибки неоднозначного сопоставления if и else.

Синтаксис языка предполагает, что при вложенных условных операторах каждое else соответствует ближайшему if. В качестве такого ошибочного примера можно привести следующую конструкцию [Подбельский В.В. Язык С++. М.:Финансы и статистика, 2001]:

<?php
   $x = 1;
   $y = 1;
   if($x == 1)
   if($y == 1)echo("x=1 and y=1");
   else echo("x!=1");
?>

При х равном 1 и у равном 1 совершенно справедливо печатается фраза «х = 1 and у = 1». Однако фраза «х != 1» может быть напечатана при х равном 1 и при у не равном 1, так как else соответствует ближайшему if. Внешний условный оператор, где проверяется $x == 1, является сокращенным и в качестве statement 1 включает полный условный оператор, где проверяется условие $у == 1. Т.е. проверка этого условия выполняется только при х равном 1. Простым правильным решением этой задачи является применение фигурных скобок, т.е. построение составного оператора, т.е. нам нужно фигурными скобками ограничить область действия внутреннего условного оператора, сделав его неполным. Тем самым внешний оператор превращается в полный условный:

<?php
   $x = 1;
   $y = 1;
   if($x==1)
   {
      if($y==1)echo("x=1 and y=1");
   }
   else echo("x!=1");
?>

Заметим, что проверка дополнительных условий возможна при помощи оператора elseif. Оператор if может включать сколько угодно блоков elseif, но else в каждом if может быть только один. Как правило, в конструкциях if…elseif…else оператор else определяет, что нужно делать, если никакие другие условия не являются true. Однако, вообще говоря, использование оператора elseif довольно сильно ухудшает читабельность кода, и лучше в этом случае пользоваться переключателем (switch).

РНР предоставляет также возможность альтернативного синтаксиса условного оператора – без фигурных скобок, а с применением оператора endif. В следующем примере первая таблица помещается на страницу, если только $HDD равно «Maxtor», а вторая - если «Seagate». Наличие оператора endif в этом случае обязательно, так как фигурная скобка, обозначающая конец блока if, отсутствует:

<?php
   if($HDD == «Maxtor»):
?>
<table>
    <caption> Maxtor </caption>
</table>
<?php
   elseif($HDD == «Seagate»):
?>
<table>
   <caption> Seagate </caption>
</table>
<?php
   endif;
?>

Результат выполнения скрипта:

Форма запроса

Результат выполнения скрипта

Значение переменной $HDD передается формой test.html скрипту test.php. Код формы test.html:

<form action = "http://localhost/PHP/test.php;" method="get">
   HDD: <input type="text" name="HDD"/><br>
   <input type="submit"/>
</form>

РНР также, как и С++, Java предоставляет возможность заменять блоки if…else условной операцией (в отличие от унарных и бинарных операций условная операция используется с тремя операндами). В изображении условной операции присутствуют два размещенных не подряд символа ‘?’ и ‘:’ и три операнда выражения:

выражение_1 ? выражение_2 : выражение_3

Первым вычисляется значение выражения_1. Если оно истинно (т.е. не равно нулю), то вычисляется значение выражения_2, которое и становится результатом. Если при вычислении значения выражения_1 получится ноль (ложь), то в качестве результата берется выражение_3. Классическим примером условной операции является выражение

x < 0 ? –x : x;

Это выражение возвращает абсолютное значение переменой x.
Т.е., к примеру, код

<?php
   if($HDD == "Maxtor")
   {
      $CDROM = "Teac";
   }
   else
   {
      $CDROM = "Nec";
   }
?>
можно, используя условную операцию, заменить таким:

<?php
   $CDROM = ($HDD == "Maxtor") ? "Teac" : "Nec";
?>

Однако если Вы не хотите кому-то глубоко и надолго запудрить мозги, злоупотреблять такими записями вряд ли стоит, поскольку код становится, мягко говоря, нечитабельным. И вообще, чем проще – тем лучше.

к оглавлению

Знаете ли Вы, что, как и всякая идолопоклонническая религия, релятивизм ложен в своей основе. Он противоречит фактам. Среди них такие:

1. Электромагнитная волна (в религиозной терминологии релятивизма - "свет") имеет строго постоянную скорость 300 тыс.км/с, абсурдно не отсчитываемую ни от чего. Реально ЭМ-волны имеют разную скорость в веществе (например, ~200 тыс км/с в стекле и ~3 млн. км/с в поверхностных слоях металлов, разную скорость в эфире (см. статью "Температура эфира и красные смещения"), разную скорость для разных частот (см. статью "О скорости ЭМ-волн")

2. В релятивизме "свет" есть мифическое явление само по себе, а не физическая волна, являющаяся волнением определенной физической среды. Релятивистский "свет" - это волнение ничего в ничем. У него нет среды-носителя колебаний.

3. В релятивизме возможны манипуляции со временем (замедление), поэтому там нарушаются основополагающие для любой науки принцип причинности и принцип строгой логичности. В релятивизме при скорости света время останавливается (поэтому в нем абсурдно говорить о частоте фотона). В релятивизме возможны такие насилия над разумом, как утверждение о взаимном превышении возраста близнецов, движущихся с субсветовой скоростью, и прочие издевательства над логикой, присущие любой религии.

4. В гравитационном релятивизме (ОТО) вопреки наблюдаемым фактам утверждается об угловом отклонении ЭМ-волн в пустом пространстве под действием гравитации. Однако астрономам известно, что свет от затменных двойных звезд не подвержен такому отклонению, а те "подтверждающие теорию Эйнштейна факты", которые якобы наблюдались А. Эддингтоном в 1919 году в отношении Солнца, являются фальсификацией. Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМАФорум Рыцари теории эфира
Рыцари теории эфира
 16.11.2019 - 16:57: СОВЕСТЬ - Conscience -> РУССКИЙ МИР - Карим_Хайдаров.
16.11.2019 - 16:53: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Марины Мелиховой - Карим_Хайдаров.
16.11.2019 - 12:16: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Игоря Кулькова - Карим_Хайдаров.
16.11.2019 - 07:23: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вячеслава Осиевского - Карим_Хайдаров.
15.11.2019 - 18:40: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
15.11.2019 - 06:45: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
14.11.2019 - 12:35: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Светланы Вислобоковой - Карим_Хайдаров.
13.11.2019 - 19:20: ЭКОНОМИКА И ФИНАНСЫ - Economy and Finances -> ПРОБЛЕМА КРИМИНАЛИЗАЦИИ ЭКОНОМИКИ - Карим_Хайдаров.
12.11.2019 - 11:53: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Бориса Сергеевича Миронова - Карим_Хайдаров.
12.11.2019 - 11:49: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Веры Лесиной - Карим_Хайдаров.
10.11.2019 - 23:14: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Кирилла Мямлина - Карим_Хайдаров.
05.11.2019 - 21:56: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Декларация Академической Свободы - Карим_Хайдаров.
Bourabai Research Institution home page

Bourabai Research - Технологии XXI века Bourabai Research Institution