Php 如何在不使用echo的情况下使用foreach()插入HTML
我认为这是一个有效的代码:Php 如何在不使用echo的情况下使用foreach()插入HTML,php,html,Php,Html,我认为这是一个有效的代码: <?php $task_num = 0; foreach ($curent_day->getTasksList() as $task){ echo '<div class="task">'; echo '<span class="task_id">'.($task_num+1).'
<?php
$task_num = 0;
foreach ($curent_day->getTasksList() as $task){
echo '<div class="task">';
echo '<span class="task_id">'.($task_num+1).'.'.'</span>';
echo '<div class="task_time">';
echo '<span class="task_time_start">'.$task->getStartTime().'</span>';
echo '<span class="task_time_finish">'.$task->getFinishTime().'</span>';
echo '</div>';
echo '<a href="/" class="task_name">'.$task->name.'</a>';
echo '<a href="/" class="btn task_start btn_disabled">Start</a>';
echo '<a href="/" class="btn task_finish btn_disabled">Finish</a>';
echo '<div class="status_round '.$task->status.'"></div>';
echo '</div>';
$task_num++;
}
?>
有没有办法摆脱“回声”?
另外,使用HTML helper插入HTML的方法是否更正确,即使它占用更多空间?
有几种不同的方法可以通过使用单引号和双引号连接字符串,或者使用变量和“.=运算符将文本附加到字符串的末尾。只要谷歌php字符串和连接,它将有超过你需要弄清楚这一点
但使用您的示例,这里有一种方法:$task_num = 0;
foreach ($curent_day->getTasksList() as $task){
echo
'<div class="task">' .
'<span class="task_id">' . ($task_num+1) . '.'.'</span>' .
'<div class="task_time">' .
'<span class="task_time_start">' . $task->getStartTime() . '</span>' .
'<span class="task_time_finish">' . $task->getFinishTime() . '</span>' .
'</div>' .
'<a href="/" class="task_name">'.$task->name.'</a>' .
'<a href="/" class="btn task_start btn_disabled">Start</a>' .
'<a href="/" class="btn task_finish btn_disabled">Finish</a>' .
'<div class="status_round '.$task->status.'"></div>' .
'</div>';
$task_num++;
}
您必须回显才能将数据输出到浏览器
您不需要使用字符串连接或多个echo语句
另类
您可以完全删除echo并使用本机HTML语法:
<?php $task_num = 0 ?>
<?php foreach ($curent_day->getTasksList() as $task): ?>
<div class='task'>
<span class='task_id'><?= ++$task_num ?></span>
<div class='task_time'>
<span class='task_time_start'><?= $task->getStartTime() ?></span>
<span class='task_time_finish'><?= $task->getFinishTime() ?></span>
</div>
<a href='/' class='task_name'><?= $task->name ?></a>
<a href='/' class='btn task_start btn_disabled'>Start</a>
<a href='/' class='btn task_finish btn_disabled'>Finish</a>
<div class='status_round <?= $task->status ?>'></div>
</div>
<?php endforeach ?>
这将在IDE/编辑器中为您提供更好的语法高亮显示和自动格式化支持。您可以将html连接到一个变量中,然后将其与一次性echo语句一起使用
<?php
$task_num = 0;
$html = '';
foreach ($curent_day->getTasksList() as $task){
$html .= '<div class="task">';
$html .= '<span class="task_id">'.($task_num+1).'.'.'</span>';
$html .= '<div class="task_time">';
$html .= '<span class="task_time_start">'.$task->getStartTime().'</span>';
$html .= '<span class="task_time_finish">'.$task->getFinishTime().'</span>';
$html .= '</div>';
$html .= '<a href="/" class="task_name">'.$task->name.'</a>';
$html .= '<a href="/" class="btn task_start btn_disabled">Start</a>';
$html .= '<a href="/" class="btn task_finish btn_disabled">Finish</a>';
$html .= '<div class="status_round '.$task->status.'"></div>';
$html .= '</div>';
$task_num++;
}?>
使用PHP速记。示例:使用内联PHP:示例:这与yii2无关标记是基本的PHP问题
<?php
$task_num = 0;
$html = '';
foreach ($curent_day->getTasksList() as $task){
$html .= '<div class="task">';
$html .= '<span class="task_id">'.($task_num+1).'.'.'</span>';
$html .= '<div class="task_time">';
$html .= '<span class="task_time_start">'.$task->getStartTime().'</span>';
$html .= '<span class="task_time_finish">'.$task->getFinishTime().'</span>';
$html .= '</div>';
$html .= '<a href="/" class="task_name">'.$task->name.'</a>';
$html .= '<a href="/" class="btn task_start btn_disabled">Start</a>';
$html .= '<a href="/" class="btn task_finish btn_disabled">Finish</a>';
$html .= '<div class="status_round '.$task->status.'"></div>';
$html .= '</div>';
$task_num++;
}?>