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 關注
- 99 瀏覽
添加回答
舉報