在我的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,一个更好的方法就是制作新表。
我尝试构建一个SQLFiddle,但我认为它不起作用。 SQLFiddle
答案 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