Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 模板和while循环_Php - Fatal编程技术网

Php 模板和while循环

Php 模板和while循环,php,Php,我正在制作一个简单的模板系统。无法将代码保存在PHP文件中并将其输出到html文件中,这很烦人。。。 在模板中包含以下内容不太好: <?php while ($row = mysql_fetch_array($query)) { $name = $row['forum_name']; $date = $row['forum_date']; $desc = $row['forum_description']; $lastpost = $row['forum_lastpost']; ?&g

我正在制作一个简单的模板系统。无法将代码保存在PHP文件中并将其输出到html文件中,这很烦人。。。 在模板中包含以下内容不太好:

<?php 
while ($row = mysql_fetch_array($query)) { 
$name = $row['forum_name'];
$date = $row['forum_date'];
$desc = $row['forum_description'];
$lastpost = $row['forum_lastpost'];
?>

<h1><?php echo $name ?></h1>
<p><?php echo $desc ?></p>

<?php } ?>

有什么方法可以将代码保存在PHP文件中吗


谢谢

您可以像这样使用模板引擎

或者使用其他语法,如:

<?php while ($row = mysql_fetch_array($query)): ?>
    <h1><?=$row['forum_name']?></h1>
    <p><?=$row['forum_description']?></p>
<?php endwhile; ?>


我建议在php文件中进行查询和处理,而不是在模板中。在php文件中构建一个数组,然后让模板显示它

我通常是这样做的:

PHP文件:

for ($i = 0; $row = mysql_fetch_array($query); $i++)
{
    $forums[$i]['name'] = $row['forum_name'];
    $forums[$i]['date'] = $row['forum_name'];
    $forums[$i]['desc'] = $row['forum_description'];
    $forums[$i]['lastpost'] = $row['forum_lastpost'];
}
模板文件:

<?php foreach ($forums as $forum) { ?>
    <h1><?=$forum['name']?></h1>
    <p><?=$forum['desc']?></p>
<?php } // foreach ($forums as $forum) ?>

另一种语法是使用“endwhile”,如glavić所示:

<?php foreach ($forums as $forum): ?>
    <h1><?=$forum['name']?></h1>
    <p><?=$forum['desc']?></p>
<?php endforeach; ?>


我喜欢使用PHP作为模板引擎,并使用MVC模式。为了使视图和业务逻辑保持分离,视图中只允许使用几种类型的PHP代码,即HTML代码。允许的代码为:

* Single functions
* Alternate format If / Else / ElseIf blocks
* Alternate format For loops
* Alternate format Foreach loops
* Alternate format Switch statements
PHP为它的一些控制结构提供了另一种语法;即if、while、for、foreach和switch。在每种情况下,备用语法的基本形式是将开始大括号更改为冒号(:),将结束大括号更改为endif;,(完);;,endfor;,endforeach;,或结束开关;,分别地这些替代格式是视图中应使用的唯一格式

我承认替代的PHP语法比较慢(因为解释器正在跳入和跳出PHP标记)。但是,这通常相当于毫秒的处理时间,并且与大多数环境中的当今服务器没有什么区别

最后,我更喜欢在视图中使用速记PHP标记。这通常被认为是一个坏主意,因为服务器支持较少。但是,我相信它稍微提高了可读性(特别是当使用PHP作为模板引擎时),我通常会避免使用我无法控制这些事情的web主机

我将更详细地描述这一点,并在我的网页上提供一些关于我为基于web的PHP应用程序创建的模板的示例。您可以在下面的URL中找到


不,这将在每次循环中向数组添加4个新元素,每个元素都有一个变量集。PHP块中的缩进作为标记式结构是好的,但请记住htmlspecialchars()论坛名称和描述以避免HTML注入。