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

修复PHP代码:统计各Cluster中kondisi列数值分布(结果为0问题)

修复K-means聚类结果中各Cluster的Kondisi值统计问题

常见问题排查与修复步骤

1. 确认Session已正确开启

在读取$_SESSION['kmeans_result']前,必须在代码最开头调用session_start(),否则无法获取Session中的数据集,统计结果自然会全部为0。

2. 验证数据集结构

先打印数据集的实际结构,确认数据已正确加载,且每个元素包含cluster和kondisi字段:

session_start();
// 调试用:输出数据集结构,确认数据格式
echo "<pre>";
print_r($_SESSION['kmeans_result']);
echo "</pre>";

正常的数据集结构应类似:

Array
(
    [0] => Array
        (
            [cluster] => 0
            [kondisi] => 1
            // 其他字段...
        )
    [1] => Array
        (
            [cluster] => 0
            [kondisi] => 2
            // 其他字段...
        )
    // 更多数据条目...
)

3. 修复统计逻辑错误

假设你的原代码存在统计变量重置、类型不匹配或分组逻辑错误,以下是修复后的完整代码:

session_start();
// 初始化Cluster统计容器,自动适配所有存在的Cluster编号
$clusterStats = [];

// 遍历所有数据,按Cluster分组统计Kondisi数量
foreach ($_SESSION['kmeans_result'] as $data) {
    $clusterId = $data['cluster'];
    // 统一转为数字类型,避免字符串与数字比较的不匹配问题
    $kondisi = (int)$data['kondisi'];

    // 若当前Cluster未初始化统计项,先创建初始值
    if (!isset($clusterStats[$clusterId])) {
        $clusterStats[$clusterId] = [
            'baik' => 0,
            'sedang' => 0,
            'buruk' => 0
        ];
    }

    // 根据Kondisi值累加对应统计项
    switch ($kondisi) {
        case 1:
            $clusterStats[$clusterId]['baik']++;
            break;
        case 2:
            $clusterStats[$clusterId]['sedang']++;
            break;
        case 3:
            $clusterStats[$clusterId]['buruk']++;
            break;
        // 可选:处理未知Kondisi值的情况
        default:
            break;
    }
}

// 遍历每个Cluster,输出独立统计表格
foreach ($clusterStats as $clusterId => $stats) {
    echo "<h3>Cluster {$clusterId}</h3>";
    echo "<table border='1'>";
    echo "<tr><th>Kondisi</th><th>数量</th></tr>";
    echo "<tr><td>Baik (1)</td><td>{$stats['baik']}</td></tr>";
    echo "<tr><td>Sedang (2)</td><td>{$stats['sedang']}</td></tr>";
    echo "<tr><td>Buruk (3)</td><td>{$stats['buruk']}</td></tr>";
    echo "</table><br>";
}

4. 关键修复点说明

  • Session初始化:确保session_start()在任何输出之前执行,否则无法读取Session数据
  • 统计变量作用域:将统计容器放在循环外部,避免每次循环重置统计值
  • 类型统一:强制将kondisi转为数字类型,解决字符串与数字比较的匹配问题
  • 分组统计逻辑:先一次性完成所有Cluster的统计,再逐个输出表格,避免重复遍历数据

内容的提问来源于stack exchange,提问作者G.PAUDRA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:42:47