PHP: Альтернативный синтаксис управляющих структур

Change language: EnglishBrazilian PortugueseChinese (Simplified)FrenchGermanJapaneseRussianSpanishTurkishOther

Submit a Pull Request Report a Bug

(PHP 4, PHP 5, PHP 7, PHP 8)

PHP предлагает альтернативный синтаксис для некоторых его управляющих структур, а именно: if, while, for, foreach и switch. В каждом случае основной формой альтернативного синтаксиса является изменение открывающей фигурной скобки на двоеточие (:), а закрывающей скобки на endif;, endwhile;, endfor;, endforeach; или endswitch; соответственно.

В приведённом выше примере, блок HTML «A равно 5» вложен внутрь структуры if, написанной с альтернативным синтаксисом. Блок HTML будет показан только если переменная $a равна 5.

Альтернативный синтаксис также применяется и к

else и elseif. Ниже приведена структура if с elseif и else в альтернативном формате:

Замечание:

Смешивание синтаксиса в одном и том же блоке управления не поддерживается.

Внимание

Любой вывод (включая пробельные символы) между выражением switch и первым case приведут к синтаксической ошибке. Например, данный код не будет работать:

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

?> и следовательно ничего не выводится между switch и case:

Смотрите также while, for и if для дальнейших примеров.

add a note

User Contributed Notes 2 notes

up

down

4

toxyy

6 months ago

I feel compelled to give a more elegant way using heredoc than the other comment:

<ul>
<?php foreach($list as $item): echo
<<<ITEM
    <li>Item $item[name]</li>
ITEM;
endforeach; ?>
</ul>

Which works better with multi line blocks, as you only need one overall php tag.

(please don't omit the closing </li> tag despite it being legal, personal preference)

up

down

-34

johannes dot kingma at gmail dot com

11 months ago

The alternative control syntax can be combined elegantly with the short php notation <?- => for output where both blend in into the html code

    <ul>
    <?php for($counter=0; $counter<10; $counter++) :?>

        <li>Item <?=$counter?>
    <?php endfor;?>
    </ul>

(Btw. ommiting the </li> is perfectly legal)

add a note

12. Альтернативный синтаксис управляющих конструкций PHP

Язык PHP помимо классического синтаксиса таких конструкций как if, switch, while, for и foreach поддерживает ещё и альтернативный. Вы, возможно, успевали замечать в записях на форумах знакомые if без фигурных скобок и с двоеточиями? Всё верно, это тот же PHP, но открывающую фигурную скобку заменили на двоеточие (:), а закрывающую — на соответствующее ключевое слово endif, endswitch, endwhile, endfor и endforeach, которое соответствует используемой конструкции.

if

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

<?php
   
  $a = 4;
  $b = 3;
   
  if ($a > $b): 
    echo $a . " больше";  
    echo ", чем " . $b;   
  elseif ($a == $b):       // Обратите внимание, здесь elseif записан в одно слово.
    echo $a." равно ".$b;
  else:
    echo $a." меньше ".$b;
  endif;
 
?>
Внимание! При альтернативной записи условий if/elseif важно учитывать тот факт, что elseif нужно писать в одно слово, тогда как else if уже вызовет фатальную ошибку в PHP.
<?php
 
  /* Этот код вызовет ошибку: */
  if ($a > $b):
    echo $a." больше, чем ".$b;
  else if ($a == $b):
    echo $a." равно ".$b;
  endif;
 
?>

Не допускается смешивание двух видов записи в рамках одной конструкции. Код не будет работать если в одном месте вы пишете полную запись, а в другом альтернативную. Это относится ко всем конструкциям, упоминаемым в статье.

<?php
 
  /*Этот код не будет работать*/
  if($a > $b): 
    echo $a . " больше";  
    echo ", чем " . $b;   
  elseif ($a == $b) {  // нельзя смешивать два вида записей в одной конструкции
    echo $a." равно ".$b;
  }
  else:
    echo $a." меньше ".$b;
  endif;
 
?>

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

switch

<?php
 
  $num = 2;
  switch ($num):
    case 0:
      echo "\$num равно 0";
      break;
    case 1:
      echo "\$num равно 1";
      break;
    case 2:
      echo "\$num равно 2";
      break;
    default:
      echo "\$num не равно 0, 1 или 2";
  endswitch;
    
?>

while

<?php
 
  $num = 5;
  while ($num--):
    echo "$num";
  endwhile;
 
?>

for

<?php
 
  for ($k = 1; $k <= 10; $k++):
    echo "$k ";
  endfor;
    
 
  // пример с вложенным циклом
  for ($i = 0; $i < 4; $i++):
    echo "Внешний цикл.";
    for ($j = 0; $j < 2; $j++):
      echo "Вложенный цикл.
";
    endfor;  //вложенные конструкции тоже надо завершать ключевым словом
  endfor;
    
?>

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

<?php
 
  for ($i = 0; $i < 4; $i++):
    echo "Внешний цикл.";
    for ($j = 0; $j < 2; $j++) {
      echo "Вложенный цикл."; // всё успешно отработает
    }
  endfor;

?>

Дополнительные возможности: html внутри управляющих конструкций

Переходим к следующей особенности использования альтернативного синтаксиса. Когда можно использовать и как он может соседствовать с html-кодом.

Ниже простой пример:

<?php if ($a == 10): ?>
  <p>A равно 10</p>
<?php endif; ?>

В коде выше, блок с html — A равно 10 — расположен в конструкции if, написанной с альтернативным синтаксисом. HTML, то есть параграф с содержимым, отобразится только в тогда, когда значение переменной $a будет равняться 10.

Как вы уже могли догадаться из примера выше, альтернативный синтаксис можно использовать для вставок в HTML-разметку. Так как в этом случае код php и html будут разделены, это упрощает верстку страницы.

Рассмотрим примеры для других конструкций:

<ul>
  <!-- использование конструкции for-->
  <?php for ($items = 1; $items <= 10; $items++): ?>
    <li><?php echo $items ?></li>
  <?php endfor; ?>
</ul>
 
<ul>
  <!--тоже самое, но с использованием конструкции while-->
  <?php $items = 1; while ($items <= 10): ?>
    <li><?php echo $items ?></li>
  <?php $items++; endwhile; ?>
</ul>
 
<!--использование конструкции switch-->
<?php switch ($item):
  case 1: ?>
    <p>Значение равно 1. </p>
    <?php break; ?>
  <?php default: ?>
    <p>Значение не известно.</p>
<?php endswitch; ?>

Никто не заставляет использовать подобную альтернативную запись, но удобство при чтении кода, мнения специалистов и миллионы строк кода по всему мира в таком формате делает подобное решение рекомендуемым) Так что присмотритесь, попробуйте на досуге написать таким образом конструкцию. Вероятнее всего, такой записью вы и будете в дальнейшем пользоваться.

<?php if ($a == 10) { ?>
  <p>A равно 10</p>
<?php } else { ?>
  <p>A не равно 10</p>
<?php } ?>

А теперь самостоятельно!)

Успехов!

PHP: Альтернативный синтаксис для управляющих структур

Изменение языка: английскийбразильский португальскийкитайский (упрощенный)французскийнемецкийяпонскийрусскийиспанскийтурецкийДругое

Отправить запрос на вытягивание Сообщить об ошибке

(PHP 4, PHP 5, PHP 7, PHP 8)

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

В приведенном выше примере блок HTML «A равно 5» вложен в , если оператор написан альтернативным синтаксисом. Блок HTML будет отображаться, только если $a равно 5.

Альтернативный синтаксис применяется к , иначе и , иначе . Ниже приводится , если структура с , иначе и иначе в альтернативном формате:

Примечание :

Смешивание синтаксисов в одном блоке управления не поддерживается.

Предупреждение

Любой вывод (включая пробелы) между переключателем оператор и первый случай приведет к синтаксису ошибка. Например, это неверно:

Принимая во внимание, что это действительно так, поскольку завершающая новая строка после 9Оператор 0009 switch считается частью закрытия ?> и, следовательно, ничего не выводится между Переключатель и корпус :

См. также пока, для и если для дальнейших примеров.

добавить примечание

Пользовательские заметки 2 заметки

вверх

вниз

4

toxyy

6 месяцев назад

Я чувствую себя обязанным дать более элегантный способ использования heredoc, чем другой комментарий:


    <<    
  • Item $item[name]

  • ITEM;
    конецфореач; ?>

Что лучше работает с многострочными блоками, так как вам нужен только один общий тег php.

(пожалуйста, не опускайте закрывающий тег, несмотря на то, что это законно, личное предпочтение)

вверх

вниз

-34

йоханнес точка кингма в gmail точка ком

11 месяцев назад

Альтернативный синтаксис управления можно элегантно комбинировать с короткой нотацией php для вывода, где оба смешиваются с HTML-кодом

   


       
           
  • Item
       
       

(кстати, опущение вполне допустимо)

добавить примечание

Php Endif Endforeach Endwhile с примерами кода

Php Endif Endforeach Endwhile с примерами кода

Всем привет! В этом посте мы рассмотрим, как найти ответ на Php Endif Endforeach End, используя компьютерный язык.

 <таблица>

    
        
        
            
        
        <тд>
        
        
            
 <таблица>

    
        
        
            
        
        <тд>