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

PHP动态透视表无法输出Response值问题求助

问题根源分析

你的透视表网格无法显示Response内容,核心原因是数组索引完全不匹配:

  • 构建$pivotData时,第二层使用Homework_assign_id作为键,但后续遍历列时,你用作业标题($column)去索引$rowData,两者没有关联关系,自然找不到对应内容。
  • 你将$columns转成纯值数组(array_values($columns)),丢失了Homework_id与作业标题的关联,无法通过标题反向定位到对应的作业记录。
修正方案
  1. 调整$pivotData结构,用Homework_id作为第二层键(透视表的列按作业划分,每个用户对应每个作业的提交记录)。
  2. 保留$columns的键值对(不使用array_values),遍历列时同时获取Homework_id和作业标题。
  3. 遍历列时,用Homework_id而非标题去索引$rowData,匹配对应的Response内容。
修正后的代码
<?php
$class_id = 34;
$Topic_id = 113;

// Actual Query that outputs all the desired results correctly on MySQL
$query = "SELECT Homework.Homework_title, Class_List.Class_List_id, Class_List.class_id, Class_List.user_id, Homework_Assign.Homework_assign_id, Homework_Assign.Completed, Homework_Assign.Response, Homework_Assign.Class_List_id, Homework_Assign.Homework_id, User_Accounts_.user_id, User_Accounts_.firstname, User_Accounts_.lastname, Homework.Topic_id FROM Homework, Class_List, Homework_Assign, User_Accounts_ WHERE Class_List.Class_List_id=Homework_Assign.Class_List_id AND User_Accounts_.user_id=Class_List.user_id AND Class_List.class_id=? AND Homework.Homework_id=Homework_Assign.Homework_id AND Homework.Topic_id=? ORDER BY User_Accounts_.firstname ASC";

// Prepared Statments
$stmt = $conn->prepare($query);
$stmt->bind_param("ii", $class_id, $Topic_id);
$stmt->execute();

$result = $stmt->get_result();

if ($result->num_rows > 0) {
    // Fetch data and build the pivot table
    $pivotData = array();
    $columns = array();

    while ($row = $result->fetch_assoc()) {
        // 用Homework_id作为第二层键,关联到对应的作业
        $userName = $row['firstname'] . ' ' . $row['lastname'];
        $homeworkId = $row['Homework_id'];
        $pivotData[$userName][$homeworkId]['Response'] = $row['Response'];
        
        // 保留Homework_id与标题的关联
        $columns[$homeworkId] = $row['Homework_title'];
    }

    // Sort columns in ascending order by Homework_id
    ksort($columns);

    // Display the pivot table
    echo '<table border="1"><tr><th></th>';

    foreach ($columns as $homeworkId => $title) {
        echo '<th>' . $title . '</th>';
    }

    echo '</tr>';

    foreach ($pivotData as $rowKey => $rowData) {
        echo '<tr><td>' . $rowKey . '</td>';

        foreach ($columns as $homeworkId => $title) {
            echo '<td>';
            // 用Homework_id去索引rowData,匹配对应的Response
            if (isset($rowData[$homeworkId]['Response'])) {
                echo 'Response: ' . $rowData[$homeworkId]['Response'];
            } else {
                echo 'No response';
            }
            echo '</td>';
        }

        echo '</tr>';
    }

    echo '</table>';
} else {
    echo "No results found.";
}
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:57:45