Php SQL数组列;合并所有阵列

Php SQL数组列;合并所有阵列,php,mysql,arrays,nltk,cakephp-3.0,Php,Mysql,Arrays,Nltk,Cakephp 3.0,在我的SQL数据库中,是一个包含数组的列。每个数组由许多数组组成 [“字”,数字] 如示例$rowOne、$rowTwo、$rowThree。数组的长度和字可以不同。我用NLTK分析了许多文本。现在我想合并一个类别的所有文本,以获得一个类别中最常见的单词 $rowOne=[('love',14),('let',12),('rain',12),('yea',7),('oh',7),('make',5),('happy',3),('dream',3)] $rowTwo=[('la',12),('hi

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

[“字”,数字]

如示例$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)]

$rowtree=[('deal',33),('ya',19),('gott',7),('know',6),('other',5),('take',5),('thrift',4),('get',4)]

其目的是获取我的WebApp用户想要的所有$rows,通常可以是数千行,并将所有数组组合成一个按数字排序的$result数组

我现在的方法是构建一个$combinedArray和这么长的行来组合现有的函数CombinetWharray将一个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,但我认为它不起作用

我不会费心合并数组。 像arilia已经提到的那个样,创建一个包含单词和计数的专用表会更快更容易。 所以这张桌子看起来像这样:

song_id    word     word_count
1          hello    20
2          bye      3
select *, sum(word_count)
from tablename
group by word
然后可以使用sql函数sum进行如下求和:

song_id    word     word_count
1          hello    20
2          bye      3
select *, sum(word_count)
from tablename
group by word
如果您希望通过例如仅查找特定歌曲中的词数来进一步过滤结果,您可以查询:

select * sum(word_count)
from tablename
where song_id in (<ids of the songs you want to search for>)
group by word
选择*sum(字数)
从表名
song_id在()中的位置
逐字分组

使用merge作为参考转到更好的解决方案IMHO不应该使用列来存储数组,而是创建一个专用表,
两者之间有许多关系我更新了我的问题并尝试构建一个SQLFIDLE,但我不知道它是否有效,因为我以前从未使用过它。。。