亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

嵌套的 foreach 循環僅在 PDO 上工作一次

嵌套的 foreach 循環僅在 PDO 上工作一次

PHP
人到中年有點甜 2022-10-28 14:58:24
這是我的代碼片段:<?php $kategorien = $kategorieQuery$items = $itemQueryforeach($kategorien as $kategorie): ?>    <div class="list">        <h1><?php echo $kategorie['kategorie']; ?></h1>        <?php if(!empty($items)): ?>        <ul>            <?php foreach($items as $item):                if($kategorie['kategorie'] == $item['kategorie']): ?>                    <li class="todo"><?php echo $item['kategorie']; ?></li>                <?php endif; ?>               <?php endforeach; ?>        </ul>        <?php else: ?>            <p>No todos</p>        <?php endif; ?>    </div><?php endforeach; ?>變量看起來像這樣(print_r):$kategorie:  [kategorie] => test [0] => test$item: Array ( [id] => 4 [0] => 4 [name] => name [1] => name [done] => 0 [2] => 0 [kategorie] => test [3] => test ) 1我的問題是外部foreach循環有效,但內部循環只運行一次。因此,它會回顯所有類別等于當前類別的項目名稱,但所有后續時間都沒有輸出,但 $items 在任何時候都不為空。我錯過了什么?
查看完整描述

1 回答

?
慕的地6264312

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()會將結果保存到一個數組中,該數組可以循環多次。


一個數據庫結果集有一個內部計數器;一旦到達結果集的末尾,就不能再循環它,這與數組不同。


查看完整回答
反對 回復 2022-10-28
  • 1 回答
  • 0 關注
  • 99 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號