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

如何将数组数据以行列结合的表格形式正确展示并匹配测试列?

解决测试结果表格列不匹配的问题

嘿,我来帮你搞定这个测试结果表格列不对齐的问题!从你描述的情况来看,核心问题是手里的数组是单条测试记录的扁平结构,但生成目标表格需要先把数据按用户分组,再把每个测试结果对应到正确的列上。

先理清楚核心逻辑

你想要的是按用户聚合,把每个用户的不同测试结果对应到Test/test2/test3列,现在数据没对齐,就是因为没做「用户分组+测试列映射」这关键两步。

第一步:定义测试标题和表格列的对应关系

首先得明确每个test_title(比如你提到的tofel)对应表格里的哪一列,先定一个映射规则:

// 把测试标题对应到表格的列名,你可以根据实际测试名称调整
$testToColumn = [
    'tofel' => 'Test',
    'ielts' => 'test2', 
    'gre' => 'test3'    
];

第二步:把原始数组按用户分组

假设你的原始数据是多条测试记录的集合(比如你给出的size=8的数组里包含多条用户的测试结果),我们需要把这些数据按用户名聚合,每个用户下预填所有列的空值,再把对应测试的结果填进去:

// 模拟你的原始数据(根据你给出的片段扩展)
$rawTestData = [
    ['firstname' => 'raj', 'test_title' => 'tofel', 'submittimestamp' => 'pass'],
    ['firstname' => 'raj', 'test_title' => 'gre', 'submittimestamp' => 'fail'],
    ['firstname' => 'user', 'test_title' => 'tofel', 'submittimestamp' => 'fail'],
    ['firstname' => 'user', 'test_title' => 'ielts', 'submittimestamp' => 'pass'],
    ['firstname' => 'user1', 'test_title' => 'gre', 'submittimestamp' => 'pass'],
    // 你提到的索引9的数组应该是类似上面的另一条记录
];

// 初始化分组后的用户数据,每个用户默认所有列为空
$groupedUsers = [];
foreach ($rawTestData as $record) {
    $username = $record['firstname'];
    $targetColumn = $testToColumn[$record['test_title']];
    $testResult = $record['submittimestamp'];

    // 如果用户还没在分组里,先创建空模板
    if (!isset($groupedUsers[$username])) {
        $groupedUsers[$username] = [
            'Test' => '',
            'test2' => '',
            'test3' => ''
        ];
    }
    // 把测试结果填入对应的列
    $groupedUsers[$username][$targetColumn] = $testResult;
}

第三步:生成目标表格

有了分组好的数据,就可以轻松输出你要的表格了:

// 输出表头
echo "NAME | Test | test2 | test3|\n";
echo "-----|------|-------|------|\n"; // 加分隔线让表格更清晰
// 输出每一行用户数据
foreach ($groupedUsers as $name => $results) {
    echo "{$name} | {$results['Test']} | {$results['test2']} | {$results['test3']} |\n";
}

运行这段代码后,就能得到你想要的结果:

NAME | Test | test2 | test3|
-----|------|-------|------|
raj | pass | | fail |
user | fail | pass | |
user1| | | pass |

补充说明

如果你的原始数组结构不是多条记录的集合(比如是一个单一大数组混着多条数据),那你需要先把它拆分成类似上面$rawTestData的结构,再按上面的步骤处理。只要把数据按用户分组、对应好测试列,就能解决列不匹配的问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:02:00