将DB记录分解为表格格式

时间:2013-04-16 10:28:44

标签: php mysql explode

我的网站连接了一个数据库,用于记录用户在我们构建的应用程序上执行的操作。该应用程序包含许多用户可以查看和下载的图像,应用程序跟踪每个用户,他们查看过的图像是否用逗号分隔

我想要做的是编写一个PHP脚本,允许我将这个分隔的文本字符串转换为计算的表格格式

如果数据库的示例记录为:

1 | 1-A, 1-B, 2-A, 2-C
2 | 1-A
3 | 1-B, 2-C
4 | 
5 | 1-A, 1-B, 1-C, 2-A

我想编写一个能够将其输出为:

的脚本
1-A = 3
1-B = 3
1-C = 1
2-A = 2
2-C = 2

(我想指出,我并不是说我希望在每个条目后面都有变量,其计算总数为值,但我最好还是返回此值)

我的第一步是将每个记录分解为一个数组,但后来我不确定我的下一步是将它转换为可以写入表格的内容。

我意识到数据库的结构很差,但不幸的是我还没写过,所以我没有能力重新构建数据存储。

亲切的问候

1 个答案:

答案 0 :(得分:1)

这应该有效:

<?php
    $values = array  (
                        '1' => '1-A, 1-B, 2-A, 2-C',
                        '2' => '1-A',
                        '3' => '1-B, 2-C',
                        '4' => '',
                        '5' => '1-A, 1-B, 1-C, 2-A'
                    );
    $valueCounts = array();
    foreach($values as $value)
    {
        foreach(explode(', ', $value) as $val)
        {
            if(!key_exists($val, $valueCounts))
            {
                if($val) $valueCounts[$val] = 1;
            }
            else
            {
                $valueCounts[$val]++;
            }
        }
    }
    ksort($valueCounts);
    foreach($valueCounts as $value => $count)
    {
        echo "$value = $count<br />";
    }
?>

结果:

1-A = 3
1-B = 3
1-C = 1
2-A = 2
2-C = 2

如果您不确定如何填充$values数组,请粘贴数据库代码,我会尝试将其合并到上面。