0

我有一个连接到我的站点的数据库,该数据库正在记录用户在我们构建的应用程序上采取的操作。该应用程序包含许多图像,用户可以查看和下载这些图像,并且该应用程序跟踪每个用户他们查看过的图像,以逗号分隔

我想要做的是编写一个 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

(我想指出,我并不是建议我要在每个条目之后命名变量,并将其计算的总数作为值,我愿意但是最好返回这个值)

我的第一步是将每条记录分解成一个数组,但是我不确定下一步是否可以将它变成我可以写入表格的东西。

我意识到数据库的结构非常糟糕,但不幸的是我还没有编写它,所以我没有能力重新构造存储的数据。

亲切的问候

4

1 回答 1

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数组,请粘贴数据库代码,我会尝试将其合并到上面。

于 2013-04-16T11:40:58.023 回答