Jeena Paradies: Warum wird die Zeile nicht ausgetauscht? -> Neuer Anlauf

Beitrag lesen

Hallo,

Du bist sehr undeutlich in dem was du konkret machst. Ich glaube dich verwirrt auch was in PHP eine meiner nach sehr schlechte Designentscheidung war dass man Array und Dictionary von der Syntax her vermischt hat. Du versuchst dich in einem Assoziativen Array (wo anders Dictionary genannt), bei dem ich nicht weiß woher du die Keys nimmst und das dann grundsätzlich so aussieht dass da immer Paare von key-value drin sind:

$d = array("key" => "value", "key2" => "value2");  
echo $d["key2"]  
// -> value2

Was man in deinem Fall eigentlich machen sollte, so weit ich deine Beschreibung verstanden habe, ist ein ganz normales Array (kein Assoziatives), also eine Liste von items nimmt die keine Paare hat sondern wo numerische Keys automatisch generiert werden:

$a = array("value", "value2");  
echo $a[1]; // Nummerierung fängt bei 0 an, deshalb schreiben wir 1 um das zweite item aus dem Array zu bekommen  
// -> value2

Grundsätzlich würde das was du versuchst zu machen, aleo eine Zeile in einer Datei ersetzen, so funktionieren:

$overwrite_line = 3;  
$new_string = "my new text";  
$file_path = "myfile.txt";  
  
$file_array = file($file_path); // Datei in ein Array einlesen, jede Zeile ist ein item im Array  
if(count($file_array) > $overwrite_line) { // ersetze nur wenn es die Zeile auch gibt  
    $file_array[$overwrite_line - 1] = "my new text" . "\n"; // ersetze die Zeile (die nummerierung fängt bei 0 an, deshalb das -1  
    file_put_contents($file_path, $file_array); // Schreibe das veränderte Array zurück in die Datei  
}

Jeena