Условное вложение HTML между блоками кода PHP?

Я довольно новичок в PHP. Я начал изучать его, как 3 недели назад. Я не могу найти ответ на этот вопрос в StackOverflow, Google или Youtube. Документация PHP на это меня просто смущает. Чтобы ответить на вопрос, как PHP-код смешивается с HTML-работой?

<?php if (something) { ?> <p>Hello</p> <?php } ?> 

Элемент p будет отображаться только в том случае, если что-то имеет правдивое значение, как это? … Я точно думал, что движок PHP игнорирует то, что происходит вокруг внешних блоков (например, <? Php?>), И только анализируется что происходит внутри.

Приведенный ниже код обычно обрабатывается движком PHP и отправляется в браузер, не затрагивая каких-либо элементов HTML (хотя он явно находится между двумя блоками кода).

 <?php echo $something; ?> <p>Hello</p> <?php echo $something; ?> 

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

PS Я задал этот вопрос в чате раньше и подумал, что правильно понял, но когда я пошел на реализацию, мой разум все еще был похож, как это работает? Мне кажется, это какой-то хак.

Теперь легко. Определенно вам нужен учебник php для начала работы на http://www.tizag.com/phpT/

Вот что вы делаете:

 <?php //Anything inside me php processes if($something) { echo "<p>something</p>"; } //About to stop processing in php ?> <p>Anything outside of the php statement above will just be printed to the dom</p> - <?php //Anything inside me php processes if($something) { echo "<p>something</p>"; } //About to stop processing in php ?> <p>Anything outside of the php statement above will just be printed to the dom</p> 

Быстрое примечание. Хорошая практика – отделить ваш PHP от HTML.

 <?php if ($something) { ?> <-- where is the other { <p>Hello</p> <?php } ?> <-- oh I see it. 

В вашем первом примере действительно верно, что <p>Hello</p> будет отображаться тогда и только тогда, когда «something» возвращает true.

Если вы закрываете php-тэг с?>, Но имеете «незакрытое» выполнение, например if (blah) { ... , PHP-движок понимает ваши желания и делает соответственно.

Зачем?

Механизм PHP остается «ожидающим» до тех пор, пока выполнение не будет закрыто с помощью}, а затем окончательный результат будет оценен, и браузер продолжит работу с строками ниже.

Очевидно, если вы оставите окончательный}, вы увидите некоторые ошибки, которые говорят вам, что PHP ожидает, что вы закончите то, что вы начали, и вы не

И php, и html анализируются в строке. Таким образом, когда он перемещается по вашему сценарию, он запускает скрипты php в тегах и отображает html в том порядке, в котором они размещаются. Например:

 <? $someVar = "someVar string value"; ?> <h1>This is a title</h1> <? if(1 == 1){?> <p>This paragraph will appear in between the header tags because 1 == 1 is true</p> <? } ?> <h3>Another header which will follow the paragraph</h3> <p>The value of someVar is: <?=$someVar;?></p> // <?= is a short hand for echo 

Это будет выглядеть так:

 <h1>This is a title</h1> <p>This paragraph will appear in between the header tags because 1 == 1 is true</p> <h3>Another header which will follow the paragraph</h3> <p>The value of someVar is: someVar string value</p> 

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

Вы можете написать php-код в любом месте HTML, используя блок php code

 <?php echo "whatever " ?> 

или

 <?php echo "<h1>Here everything will displayed in h1 </h1> "; ?> 

и если вы используете структуру управления ( если, переключатель и т. д.), то он будет вести себя как все остальные языки, означает, что если что-то истинно, тогда он выполнит часть, написанную между { } .

поэтому, если вы напишете неопределенную переменную в условии if, то она не будет выполнять блок кода, потому что неопределенная переменная рассматривается как ложное условие.

Кроме того, вы можете проверить любое значение переменной var_dump($variable)

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

 <!DOCTYPE html> ... <div> <?php if ( the_thing === true ) : ?> <p>The thing is true! \o/</p> <?php else if ( the_other_thing === true ) : ?> <p>The other thing is true! meh</p> <?php else : ?> <p>Nothing is true :-(</p> <?php endif; ?> </div> ...