2017-07-14 3 views
-3

Ich habe eine TXT-Datei mit folgendem Inhalt:PHP: Split Array Werte Schlüssel und Wert

1:2 
2:5 
3:10 
4:1 

Ich muss diese Zahlen addieren können. Zum Beispiel möchte ich zur letzten Zeile +5 hinzufügen:

1:2 
2:5 
3:10 
4:6 

Wie kann ich das erreichen? Ich habe mich gefragt, ob der richtige Weg war, die Datei in ein Array einzugeben, aber ich habe keine Ahnung, wie ich das machen soll, da ich die Zahlen in Schlüssel und Werte trennen muss, denke ich?

+0

Normalerweise versuchen Sie zumindest etwas. Dann zeigen Sie uns das und wir schlagen eine Verbesserung oder eine Verbesserung vor. SO ist keine freie Programmierstelle – RiggsFolly

+2

lesen Sie die Datei für Zeile, explodieren durch ':' und bauen Sie Ihr neues Array. – Jeff

+0

Bitte lies [ask] und [mcve], um loszulegen. –

Antwort

1

Das Problem wie beschrieben ist ziemlich allgemein, aber ich kann einige Annahmen tun, um Ihnen zu helfen.

Die anfängliche txt-Datei ist im Grunde ein Schlüssel-Wert Speicher:

1:2 
2:5 
3:10 
4:1 

Unter der Annahme, dass die erste Zahl der Schlüssel ist, sollten Sie Ihren Algorithmus erzählen eine +x Summe auf der Linie mit den wichtigsten n auszuführen .

In (ungetestet & nicht optimiert) PHP-Code:

function addToStore($destKey, $numberToSum) { 
    $newStore = []; 

    foreach(file('store.txt') as $line) { 
     list($key, $value) = explode(':', $line); 

     if($key === $destKey) { 
      $value += $numberToSum; 
     } 

     newStore[] = "$key:$value"; 
    } 

    file_put_contents('store.txt', implode("\n", $newStore)); 
} 

Dann rufen Sie es wie:

addToStore('4', '5'); 
+0

Danke allen für ihre Hilfe. Sie alle waren hilfreich, aber das war am leichtesten zu verstehen und brachte es zum Laufen, indem sie dieser Antwort folgten. Vielen Dank! – korops

0

Etwas wie folgt aus:

// get from file 
$file = file('file.txt'); 
$array = []; 
foreach ($file as $line) { 
    list($column1, $column2) = explode(':', $line); 
    $array[(int) $column1] = (int) $column2; 
} 

// add number 
$array[4] += 5; 

// save to file 
$content = ''; 
foreach ($array as $column1 => $column2) { 
    $content .= $column1 . ":" . $column2 . "\n"; 
} 
file_put_contents('file.txt', $content); 

Allerdings müssen Sie sicher sein, dass Indizes in der ersten Spalte einzigartig sein wird, weil sonst einige Zeilen übersprungen werden (tatsächlich überschrieben).

0

Ja, Sie können Zahlen addieren, um es, wenn Sie es in Array-Form haben, und Sie können Speichern Sie Ihre Textdateidaten in Schlüssel/Wert-Form wie unten angegeben.

$ file_array = array();

$ myfile = fopen ("yourtextfile.txt", "r") oder die ("Datei kann nicht geöffnet werden!");

// Lesen einer Zeile bis zum End-of-Datei

während {
$ line = fgets ($ myfile) (feof ($ myfile)!);

$ line_array = explodieren (":", $ line); // spalte jede Zeile, um ein Array zu erzeugen

$ file_array [$ line_array [0]] = $ line_array [1];

}

fclose ($ myfile); // file_array sollte Ihnen Dateidaten in einem Array anzeigen

print_r ($ file_array);

Hoffe das hilft dir !!

Verwandte Themen