Каков правильный способ вложения, если else и elseif условия внутри html?
См. Это и его альтернативный вариант , который имеет тенденцию быть более читаемым, если он встроен в html-блоки.
Я рекомендую следующий синтаксис для удобочитаемости.
<? if ($condition): ?> <p>Content</p> <? elseif ($other_condition): ?> <p>Other Content</p> <? else: ?> <p>Default Content</p> <? endif; ?>
Обратите внимание, что опускание php
на открытые теги требует, чтобы short_open_tags
был включен в вашей конфигурации, что по умолчанию . Соответствующий условный синтаксис, зависящий от фигурной скобки, всегда включен и может использоваться независимо от этой директивы.
<?php if ($foo) { ?> <div class="mydiv">Condition is true</div> <?php } else { ?> <div class="myotherdiv">Condition is false</div> <?php } ?>
EDIT: Я хочу сделать заметку о ответе @ Patrick, но, по-видимому, StackOverflow считает, что моя репутация недостаточно хороша. Я считаю, что это важная нота, поскольку люди, которые приземляются здесь, делают это, чтобы учиться. Если это удаляется, потому что он не отвечает на вопрос, пусть будет так. Если Патрик может исправить свой ответ, то удаление этого не повредит.
Я вижу, что это старый вопрос / ответ, но он очень высоко ценится в поиске Bing, поэтому я вынужден добавить этот комментарий для тех PHP-запутанных душ, которые приходят сюда.
В ответе @Patrick McMahon второй комментарий здесь ( $ first_condition – false, а $ second_condition – true) не совсем точно:
<?php if($first_condition): ?> /*$first_condition is true*/ <?php elseif ($second_condition): ?> /*$first_condition is false and $second_condition is true*/ <?php else: ?> /*$first_condition and $second_condition are false*/ <?php endif; ?>
Elseif запускает, является ли $ first_condition истинным или ложным, как и дополнительные elseif- утверждения, если их несколько.
Я не эксперт по PHP, поэтому я не знаю, правильно ли это сказать, ЕСЛИ это ИЛИ, что ELSE, или если есть другой / лучший способ кодировать его на PHP, но это было бы важным отличием от тех, кто ищет ИЛИ по сравнению с условиями ELSE.
Источник – w3schools.com и мой собственный опыт.
Вы найдете несколько разных методов, которые используют люди, и у каждого из них есть свое место.
<?php if($first_condition): ?> /*$first_condition is true*/ <?php elseif ($second_condition): ?> /*$first_condition is false and $second_condition is true*/ <?php else: ?> /*$first_condition and $second_condition are false*/ <?php endif; ?>
Если в вашем атрибуте php.ini short_open_tag = true
(обычно это находится в line 141
файла php.ini по умолчанию), вы можете заменить свой открытый тег php с <?php
на <?
, Это не рекомендуется, так как большинство живых серверных сред отключены (в том числе многие CMS, такие как Drupal, WordPress и Joomla). Я уже тестировал короткие открытые теги в Drupal и подтвердил, что он сломает ваш сайт, поэтому придерживайтесь <?php
. short_open_tag
не short_open_tag
по умолчанию во всех конфигурациях сервера и не должен приниматься как таковой при разработке для неизвестных конфигураций сервера. Многие хостинговые компании отключили short_open_tag
.
Быстрый поиск short_open_tag
в stackExchange показывает 830 результатов. https://stackoverflow.com/search?q=short_open_tag. У многих людей есть проблемы с чем-то, с чем им просто не нужно играть.
с некоторыми серверными средами и приложениями короткие теги open php будут по-прежнему вызывать крах вашего кода, даже если short_open_tag
установлен в true
.
short_open_tag
будет удален в PHP6, поэтому не используйте короткие теги.
все будущие версии PHP будут отбрасывать short_open_tag
«В течение нескольких лет было рекомендовано, чтобы вы не использовали короткий тег« short cut », а вместо этого использовали полную комбинацию тегов. Благодаря широкому распространению XML и использованию этих тегов другими языками сервер может легко запутаться и в конечном итоге разбор неправильного кода в неправильном контексте. Но поскольку этот короткий отрезок был функцией в течение такого длительного времени, в настоящее время он по-прежнему поддерживается для обратной совместимости, но мы рекомендуем вам не использовать их ». – Jelmer Sep 25 '12 в 9:00 php: "short_open_tag = On" не работает
а также
Обычно вы пишете PHP следующим образом:. Однако, если разрешена директива allow_short_tags, вы можете использовать:. Также теги сортировки предоставляют дополнительный синтаксис: что равно.
Короткие теги могут показаться классными, но это не так. Они вызывают только больше проблем. Ох … и IIRC они будут удалены из PHP6. Крозин ответил 24.08.10 в 22:12 php short_open_tag проблема
а также
Чтобы ответить на вопрос, почему я цитирую Zend PHP 5: «Короткие теги были на какое-то время стандартом в мире PHP, однако у них есть главный недостаток противоречия с заголовками XML и, следовательно, имеют несколько упал на обочину ». – Fluffy Apr 13 '11 в 14:40 Являются ли короткие короткие слова PHP приемлемыми для использования?
Вы также можете увидеть, как люди используют следующий пример:
<?php if($first_condition){ ?> /*$first_condition is true*/ <?php }else if ($second_condition){ ?> /*$first_condition is false and $second_condition is true*/ <?php }else{ ?> /*$first_condition and $second_condition are false*/ <?php } ?>
Это будет работать, но оно сильно осуждается, поскольку оно не считается разборчивым и не является тем, для чего вы бы использовали этот формат. Если у вас был PHP-файл, в котором у вас был блок кода PHP, в котором внутри не было встроенных тегов, вы должны использовать формат скобок.
В следующем примере показано, когда использовать метод скобки
<?php if($first_condition){ /*$first_condition is true*/ }else if ($second_condition){ /*$first_condition is false and $second_condition is true*/ }else{ /*$first_condition and $second_condition are false*/ } ?>
Если вы делаете этот код для себя, вы можете делать то, что вам нравится, но если вы работаете с командой на работе, рекомендуется использовать правильный формат для правильного обстоятельства. Если вы используете скобки во встроенных сценариях html / php, это хороший способ уволить, так как никто не захочет очистить ваш код после вас. ИТ-руководители будут заботиться о разборчивости кода и степени профессора колледжа по удобочитаемости.
ОБНОВИТЬ
основанный на комментариях от duskwuff, его все еще неясно, если стенография не рекомендуется (по стандартам php) или нет. Я обновлю этот ответ, когда получу дополнительную информацию. Но на основе многих документов, найденных в Интернете, о сокращении вреда для переносимости. Я все равно лично не буду использовать его, поскольку он не дает преимуществ, и вы должны полагаться на настройку, которая не включена для каждого веб-хоста.
<?php if (date("H") < "12" && date("H")>"6") { ?> src="<?php bloginfo('template_url'); ?>/images/img/morning.gif" <?php } elseif (date("H") > "12" && date("H")<"17") { ?> src="<?php bloginfo('template_url'); ?>/images/img/noon.gif" <?php } elseif (date("H") > "17" && date("H")<"21") { ?> src="<?php bloginfo('template_url'); ?>/images/img/evening.gif" <?php } elseif (date("H") > "21" && date("H")<"24") { ?> src="<?php bloginfo('template_url'); ?>/images/img/night.gif" <?php }else { ?> src="<?php bloginfo('template_url'); ?>/images/img/mid_night.gif" <?php } ?>