In meiner SQL-Datenbank ist eine Spalte mit Arrays. Jedes Array besteht aus vielen ArraysSQL-Array-Spalte; Kombiniere alle Arrays
[ "Wort", NUMBER]
wie die Beispiele $ rowOne, $ rowTwo, $ rowThree. Die Länge und die Wörter der Arrays können unterschiedlich sein. Ich habe viele Texte mit NLTK analysiert. Jetzt möchte ich alle Texte einer Kategorie kombinieren, um zum Beispiel die häufigsten Wörter einer Kategorie zu erhalten.
$ rowOne = [('Liebe', 14), ('lassen', 12), ('regen', 12), ('ja', 7), ('oh', 7), ('make', 5), ('happy', 3), ('dream', 3)];
$ rowTwo = [('la', 12), ('hoch', 10), ('lustig', 6), ('sonne', 6), ('zwei', 5), (' fly ', 5), (' one ', 5), (' bridge ', 4)];
$ rowThree = [('deal', 33), ('ya', 19), ('muss', 7), ('wissen', 6), ('ein anderer', 5), (' take ', 5), (' thrill ', 4), (' get ', 4)];
Das Ziel ist es, alle $ Reihen der Benutzer meines WebApp holen wollen, die oft durch die Anzahl bestellt Tausende von Zeilen und kombinieren alle Arrays zu einem $ result Array,
Mein Ansatz jetzt ist es, ein $ combinedArray zu erstellen und so lange Zeilen zu kombinieren, dass die Funktion combineTwoArrays ein rowArray in das $ combinedArray integriert. Aber ich bin sehr unzufrieden mit dieser Lösung und der Leistung, da das Array wächst und wächst ...
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;
}
Ich hoffe, dass es eine bessere und schnellere Lösung ist ... !! :
Jede Zeile hat eine eindeutige Song-ID und ein besserer Ansatz könnte sein, eine neue Tabelle zu erstellen.
- kann ich die Zeilen mit der ID identifizieren
- aber wie soll ich meine Array geteilt ...?!?! für jede Array-Position ('Liebe', 14) eine neue Spalte oder die Zahlen auch getrennt?
Ich habe versucht, eine SQLFiddle zu bauen, aber ich denke, es funktioniert nicht. SQLFiddle
Verwendung verschmelzen für die Bezug auf http: // pHP.net – Xravn
die bessere Lösung IMHO sollte nicht eine Spalten verwenden, um Arrays zu speichern, sondern erstellen Sie eine dedicate Tabelle und eine 'hasMany' Beziehung zwischen den Zweien – arilia
Ich aktualisierte meine Frage und versuchte, eine SQLFiddle zu bauen, aber ich weiß nicht, ob Es funktioniert, weil ich es nie zuvor ... [SQLFiddle Link] (http://sqlfiddle.com/#!2/6e929) –