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

PHP多维复杂数组按评估人ID、配置ID统计对应问题数量方法

多维数组按评估人、配置双维度统计问题数量实现方案

实现思路

  • 第一步:展平原数组结构:原数组每个外层元素都额外包裹了一层一维数组,优先遍历外层数组,提取每个元素下下标为0的实际业务数据条目,得到所有待统计的有效条目集合
  • 第二步:初始化统计存储容器:使用关联数组作为统计容器,键采用评估人ID_配置ID的字符串拼接格式,值对应该组合下的问题数量,初始值为0
  • 第三步:遍历有效条目执行计数:对每个业务条目,先读取settings_row_id(配置ID),再遍历该条目下evaluator_row_id数组中的每一个评估人ID,每匹配到一组<评估人ID, 配置ID>组合,就将对应统计容器中该组合的计数加1
  • 第四步:按需读取统计结果:如果需要查询特定组合的问题数量,直接用对应的组合键从统计容器中取值即可

可运行PHP示例代码

<?php
// 原数组定义
$originalArray = [
    [
        [
            "questions_row_id" => 1,
            "settings_row_id" => 1,
            "evaluator_row_id" => ["1", "4", "101"]
        ]
    ],
    [
        [
            "questions_row_id" => 2,
            "settings_row_id" => 1,
            "evaluator_row_id" => ["1", "100"]
        ]
    ],
    [
        [
            "questions_row_id" => 4,
            "settings_row_id" => 3,
            "evaluator_row_id" => ["1", "101"]
        ]
    ]
];

// 初始化统计容器
$stats = [];

// 遍历处理原数组
foreach ($originalArray as $outerItem) {
    // 提取实际业务条目
    $businessItem = $outerItem[0];
    $settingId = $businessItem['settings_row_id'];
    $evaluatorIds = $businessItem['evaluator_row_id'];
    
    // 遍历当前条目的所有评估人ID
    foreach ($evaluatorIds as $evaluatorId) {
        $key = "{$evaluatorId}_{$settingId}";
        // 不存在则初始化计数为0
        if (!isset($stats[$key])) {
            $stats[$key] = 0;
        }
        $stats[$key]++;
    }
}

// 测试查询结果
// 评估人1+配置1的问题数量
echo "评估人ID=1且配置ID=1的问题数量:" . $stats['1_1'] . PHP_EOL;
// 评估人1+配置3的问题数量
echo "评估人ID=1且配置ID=3的问题数量:" . $stats['1_3'] . PHP_EOL;
?>

运行以上代码输出结果完全符合需求预期:

评估人ID=1且配置ID=1的问题数量:2
评估人ID=1且配置ID=3的问题数量:1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:24:02