SQL数组列;结合所有数组

时间:2016-03-22 13:30:37

标签: php mysql arrays nltk cakephp-3.0

在我的SQL数据库中是一个包含数组的列。每个数组都包含许多数组

  

[ “字”,NUMBER]

例如$ rowOne,$ rowTwo,$ rowThree。数组的长度和单词可能不同。我用NLTK分析了很多文本。现在我想要组合一个类别的所有文本,以便获得一个类别中最常见的单词。

  

$ rowOne = [('love',14),('let',12),('rain',12),('yea',7),('oh',7),('make ',5),('happy',3),('dream',3)];

     

$ rowTwo = [('la',12),('high',10),('fun',6),('sun',6),('two',5),('fly ',5),('one',5),('bridge',4)];

     

$ rowThree = [('deal',33),('ya',19),('gotta',7),('know',6),('another',5),('take ',5),('惊悚',4),('得',4)];

目的是获取我的WebApp用户想要的所有$行,通常可以是数千行,并将所有数组合并到由Number编号的一个$ result数组中,

我现在的方法是构建一个$ combinedArray和如此长的行来组合现有的函数combineTwoArrays将一个rowArray集成到$ combinedArray中。 但我对这个解决方案和性能非常不满意,因为阵列的增长和增长......

function combineTwoArray ($combinedArray, $arrayToCombine)
{
    $result = $combinedArray;
    foreach ($combinedArray as $element) {
        foreach ($arrayToCombine as $combineElement) {
            if($element[0] == $combineElement[0]{
                $number = $element[1] + $combineElement[1];
                $word = $element[0];

                $array = [$word,$number]

                array_push($result, $array);

            }
    }

    return $result;
}

我希望有更好更快的解决方案...... !! :/

每一行都有一个独特的歌曲ID,一个更好的方法就是制作新表。

  • 我可以识别id
  • 的行
  • 但是我应该如何拆分我的阵列......?!?!对于每个数组位置('love',14),新列还是数字也分开了?

我尝试构建一个SQLFiddle,但我认为它不起作用。 SQLFiddle

1 个答案:

答案 0 :(得分:0)

我不会打扰合并数组。 使用单词和计数创建一个专用表格会更快更容易,就像arilia已经提到过的那样。 所以表格看起来像这样:

time(NULL)

然后你可以使用sql函数sum求和:

song_id    word     word_count
1          hello    20
2          bye      3

如果您想过滤结果,例如只查找特定歌曲中的字数,您可以查询:

select *, sum(word_count)
from tablename
group by word