Я довольно новичок в 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)
<!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> ...