You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP多维数组遍历问题:如何按日期显示全部数据而非仅最后结果

按日期打印数组全部结果的解决方案

你的问题出在没有遍历所有日期分组,且循环条件逻辑错误,导致只能输出单个日期的内容(甚至可能出现索引越界错误)。

正确实现代码(推荐foreach遍历,更简洁安全)

// 遍历每个日期分组
foreach ($combinedResults as $date => $dailyExercises) {
    // 输出日期标题
    echo "<h2>{$date}</h2>";
    // 遍历该日期下的所有练习项
    foreach ($dailyExercises as $item) {
        echo "<p>练习:{$item['Exercise']}</p>";
        echo "<p>链接:{$item['url']}</p>";
    }
}

若坚持使用for循环(修正逻辑)

如果习惯用for循环,需要先获取每个日期下的练习总数,同时遍历所有日期:

// 先获取所有日期的键名
$allDates = array_keys($combinedResults);

foreach ($allDates as $date) {
    echo "<h2>{$date}</h2>";
    $exerciseNum = count($combinedResults[$date]);
    // 循环条件改为 $x < $exerciseNum(索引从0到总数-1)
    for ($x = 0; $x < $exerciseNum; $x++) {
        echo "<br>" . $combinedResults[$date][$x]['Exercise'];
        echo "<br>" . $combinedResults[$date][$x]['url'] . "<br>";
    }
}

原代码的问题分析

  1. 未遍历所有日期:原代码只针对单个$date变量,没有遍历外层数组的所有日期键,自然只能输出某一个日期的内容。
  2. 循环条件错误:$x<=count($combinedResults[$date][$x])中,count($combinedResults[$date][$x])是取单个练习数组的长度(固定为2),但实际应该取该日期下所有练习的总数count($combinedResults[$date]),且循环条件应该用<而非<=,避免索引越界。

内容的提问来源于stack exchange,提问作者George Kapellakis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 13:07:24