基于 foreach 输出的不同标记

Different markup based on foreach output

几天来我一直在努力解决这个问题,但不幸的是到目前为止还没有成功。我想根据 category/type 对约会进行排序,并将它们放在单独的 div 中。例如:

我的 foreach 循环为每个类型为“normal”和“special”的可用约会生成一个输入复选框。

现在我可以获得所有约会的列表:

print $apptOutput;

这会输出一个约会列表,用户可以使用复选框select:

我想做的是给每个类别一个不同的div,这样输出就分开了。例如,我希望它是这样的:

<div id="normal">
  <label for="normal">Normal</label>
    <?php print $apptOutput; ?>
</div>

特别版:

<div id="special">
  <label for="special">Special</label>
     <?php print $apptOutput; ?>
 </div>

如果问题已经生成HTML,那么在你$appOutput的阶段,你是无法轻易解决问题的。您需要在生成 $appOutput 时解决它,因为这样可以更容易地识别哪些是 Special 哪些是 Normal.

假设您从数据库中获取这些数据。在您遍历数据库中的结果集时,您可以根据 SpecialNormal[=24 的条件将每个项目放在不同的数组键中=], 使得更容易将每种类型的项目的输出生成到它自己的 div.

$data = [
    "Special" => [],
    "Normal"  => [],
];
// $resultSet being your database result set or however you get the data
foreach($resulSet as $result) {
    if ($result["type"] == "Special") {
        $data["Normal"][] = $result;
    } elseif ($result["type"] == "Normal") {
        $data["Special"][] = $result;
    }
}

现在在您的模板中,您可以更轻松地生成结果。

<div id="normal">
    <?php foreach($data["Nomral"] as $item) { ?>
        <label for="normal"><?=$item['name']?></label>
        <input type="checkbox" ...>
    <?php } ?>
</div>

<div id="special">
    <?php foreach($data["Special"] as $item) { ?>
        <label for="normal"><?=$item['name']?></label>
        <input type="checkbox" ...>
    <?php } ?>
</div>