如何使用foreach()插入HTML而不使用echo

时间:2018-05-20 02:09:31

标签: php html

我在视图中有这个工作代码:

<?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帮助程序插入HTML的方式更正确吗?

4 个答案:

答案 0 :(得分:1)

您可以完全删除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 /编辑器中提供更好的语法突出显示和自动格式化支持。

答案 1 :(得分:0)

有几种不同的方法可以使用单引号和双引号连接字符串,或者使用变量和“。=”运算符将文本附加到字符串的末尾。只是google php strings&amp;连接,它将超过你需要解决这个问题。

但是在这里使用你的例子是一种方法:

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

}

您必须回显以将数据输出到浏览器。

答案 2 :(得分:0)

  

您不需要使用字符串连接或多个echo语句。

<强>替代

$task_num = 0;
  foreach ($curent_day->getTasksList() as $task){
    $task_num++;
    echo
      "<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>";

    }

答案 3 :(得分:0)

您可以在一个变量中连接html,然后可以将它与一次回声语句一起使用

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

            }?>