2017-03-27 13 views
1

Ich versuche, ein assoziatives Array zu erstellen, um die folgenden Informationen zu speichern. Eine URL, ein Wort und eine Häufigkeit (Anzahl der Vorkommen dieses Wortes auf dieser Webseite).assoziative Array überschreiben Einträge PHP

Ich möchte in der Lage sein, auf die Informationen zuzugreifen, wo ich eine Zeichenfolge für die URL und Wort eingeben und die Frequenz zu erhalten, wie folgt aus:

$test["somewhere.com"]["biology"] => 5 
$test["somewhere.com"]["auto"] => 10 
$test["elsewhere.com"]["biology"] => 7 

Im Moment bin ziehen ich die Informationen aus einer db ein Zeile auf einmal und versuche folgendes:

$test["$url"] = array("$word" => "$freq"); 

Nach jeder Iteration wird es geschrieben. Wie ändere ich die Syntax, um diese Situation zu vermeiden? Ist es möglich, die gewünschte Struktur zu erstellen?

Danke.

EDIT: Ich habe Array in einer While-Schleife Werte zugewiesen. Ich habe den Fehler gemacht, das Array innerhalb der Schleife zu initialisieren. Ich überschrieb keine Einträge, ich war Neuinitialisierung des Arrays unbeabsichtigt. Das war mein Problem.

+0

Haben Sie aufgegeben? – AbraCadaver

+0

@AbraCadaver siehe bearbeiten. Danke für die Hilfe – overboard182

Antwort

2

Sie weisen $test["$url"] jedes Mal als neues Array zu. Verwenden Sie den vollständigen Pfad:

Auch keine Notwendigkeit für die Angebote.

1

Anstatt den Inhalt der ersten Ebene zu überschreiben, deklarieren Sie eine neue Eigenschaft dafür. (Ohne zu wissen, wie werden Sie Ihre Urls, Wörter und Frequenzen bekommen, ist die folgende nur ein Beispiel)

$test = [] 
foreach($urls as $url => $words) { 
    $test[$url]=[]; 
    foreach($words as $word => $freq) { 
     $test[$url][$word] = $freq; 
    } 
} 

aber das sieht schrecklich wie der Versuch, ein assoziatives Array zu erstellen, die bereits gebaut ist.

Verwandte Themen