我无法弄清楚如何说出我正在谈论的内容,这是我被困的主要原因。在PHP中,我经常看到像这样的代码
html
<?php
language construct that uses brackets {
some code;
?>
more html
<?php
some more code;
}
?>
rest of html
这有什么名字吗?看过这个让我试一试,所以这里是一个具体的例子,其行为对我没有意义
<div id="content">
<ul id="nav">
<?php
$path = 'content';
$dir = dir($path);
while(false !== ($file = $dir->read())) {
if(preg_match('/.+\.txt/i', $file)) {
echo "<li class=\"$file\">$file</li>";
?>
</ul>
<?php
echo "<p class=\"$file\">" . file_get_contents($path . '/' . $file) . '</p>';
}
}
?>
</div>
大概输出<div><ul><li></li></ul><li></li><p></p>...</div>
而不是<div><ul><li></li>...</ul><p></p>...</div>
,这是我认为会发生的事情以及我想要发生的事情。为了更清楚,我希望<li>
内的<ul>
和<p>
内的<div>
。是的,我知道有一个简单的解决方案,但我想知道是否有办法用我正在寻找名称的技术来做到这一点。
答案 0 :(得分:3)
在这里添加一些内容:
如果您正在使用PHP循环进行模板化,那么还有另一种语法可以帮助您避免与缩进混淆以及哪些 - 括号匹配 - 其中:
<?php
foreach($items as $item):
?>
<b>item: </b> <?php echo $item; ?> <br />
<?php
endforeach;
?>
这可能过于简单了,但实际上你不应该在模板中使用比这更复杂的东西。像$items
变量和你需要的任何东西应该由包含模板的代码设置,而不是在模板本身。