1 回答

TA贡献1817条经验 获得超6个赞
您提供的代码可以正常工作:
<?php
$kategorien = [
["kategorie" => "test"],
["kategorie" => "sample"],
];
$items = [
["id" => 1, "name" => "item1", "done" => 0, "kategorie" => "test"],
["id" => 2, "name" => "item2", "done" => 0, "kategorie" => "test"],
["id" => 3, "name" => "item3", "done" => 0, "kategorie" => "sample"],
["id" => 4, "name" => "item4", "done" => 0, "kategorie" => "test"],
["id" => 5, "name" => "item5", "done" => 0, "kategorie" => "sample"],
];
?>
<?php foreach($kategorien as $kategorie): ?>
<div class="list">
<h1><?= $kategorie['kategorie'] ?></h1>
<?php if(!empty($items)): ?>
<ul>
<?php foreach($items as $item): ?>
<?php if($kategorie['kategorie'] == $item['kategorie']): ?>
<li class="todo"><?= $item['name'] ?></li>
<?php endif ?>
<?php endforeach ?>
</ul>
<?php else: ?>
<p>No todos</p>
<?php endif; ?>
</div>
<?php endforeach; ?>
但是在评论中,我们了解到这$items不是一个数组,而是一个语句对象。所以你需要这样做:
<?php
require_once 'app/init.php';
$itemsQuery = $db->prepare("SELECT id, name, done, kategorie FROM todo WHERE user_id = :user_id");
$itemsQuery->execute(['user_id'=>$_SESSION['user_id']]);
$items = $itemsQuery->fetchAll(\PDO::FETCH_ASSOC);
与您的类别列表类似。运行fetchAll()会将结果保存到一个数组中,该数组可以循环多次。
一个数据库结果集有一个内部计数器;一旦到达结果集的末尾,就不能再循环它,这与数组不同。
- 1 回答
- 0 关注
- 106 浏览
添加回答
举报