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++;

            }?>