【问题标题】:Explode DB record into tabular format将 DB 记录分解为表格格式
【发布时间】:2013-04-16 10:28:43
【问题描述】:

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

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

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

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

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

亲切的问候

【问题讨论】:

    标签: php mysql explode


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

    【讨论】:

    • 太好了,很高兴能帮上忙 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 2015-06-13
    • 2018-08-31
    相关资源
    最近更新 更多