在PHP代码块之间有条件地嵌入HTML


Conditional embed HTML between PHP code blocks?

我对PHP相当陌生。我3周前就开始学了。我在StackOverflow、谷歌或Youtube上找不到这个问题的答案。PHP文档让我很困惑。为了继续这个问题,PHP代码与HTML混合是如何工作的?

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

只有当某个东西有一个真实的值时,p元素才会显示,这是怎么回事?。。。我确信PHP引擎忽略了代码块外部发生的事情(例如<?PHP?>),只解析内部发生的事情。

下面的代码由PHP引擎正常解析并发送到浏览器,而不会影响任何HTML元素(尽管它明显位于2个代码块之间)。

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

我希望我不会因为问这个问题而大发雷霆,因为很多人似乎在十分之一秒内就明白了它是如何工作的。

附言:我很早就在聊天中问过这个问题,认为我理解得对,但当我去实现它时,我的脑海里仍然在想,这到底是怎么回事?这对我来说就像是某种黑客攻击。

现在很简单。绝对需要一个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与HTML 分离是一种很好的做法

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

在您的第一个示例中,当且仅当"something"返回true时,<p>Hello</p>确实会被渲染。

如果用?>关闭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代码

<?php echo "whatever " ?> 

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

如果您使用控制结构(if、switch等),那么它的行为将与所有其他语言一样,这意味着如果某个东西true,那么它将执行在{ }之间编写的部分。

因此,如果在if条件中写入一个未定义变量,那么它将不会执行的代码块,因为未定义变量被视为false条件。

此外,您还可以通过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>
...