Problem mit fputcsv()

dUser

Mitglied
Guten Tag,

wie man schon im Titel erkennen kann, bezieht sich mein Problem auf die PHP-Funktion fputcsv().

Mein Vorhaben:
-Ich möchte einzelne Spalten im Array durch etwas anderes ersetzen (hier durch ein "").
Jedoch habe ich dabei das Problem, dass immer was vom alten Array überbleibt.

CSV-Datei vor dem ersetzen:
Code:
0,Max,Mustermann,123
1,Maria,Maier,321
2,Christian,Mueller,213
(
[0] => Array
(
[0] => 0
[1] => Max
[2] => Mustermann
[3] => 123
)

[1] => Array
(
[0] => 1
[1] => Maria
[2] => Maier
[3] => 321
)

[2] => Array
(
[0] => 2
[1] => Christian
[2] => Mueller
[3] => 213
)

)
[1][1] und [1][3] sollen ersetzt werden
[0] => Array
(
[0] => 0
[1] => Max
[2] => Mustermann
[3] => 123
)

[1] => Array
(
[0] => 1
[1] =>
[2] => Maier
[3] =>
)

[2] => Array
(
[0] => 2
[1] => Christian
[2] => Mueller
[3] => 213
)

)
CSV-Datei nach dem reinschreiben:
Code:
0,Max,Mustermann,123
1,,Maier,
2,Christian,Mueller,213
eller,213

Es funktioniert richtig (Zeile 2)
=>Die Spalten wurden auf "" gesetzt.
Jedoch wurden von der letzten Zeile ein paar Zeichen in die nächste kopiert.
Hierbei stelle ich mir die frage wieso dies passiert.
Wenn ich das Ersetzungszeichen ("") durch "PLATZHALTER" ersetze, tritt diese Verschiebung jedoch nicht auf.

Vielleicht weiß einer von euch, wie man das Problem lösen kann.


Mfg

-Jack001
 
Hallo,

ja ich habe ein paar Zeilen Code, jedoch wäre der Code zum lokalisieren der richtigen Zeile etwas lang ...

Ich habe mir jedoch eine alternative überlegt, welche aufs gleiche Ergebnis hinausläuft.
Letztendlich bezieht es sich ja nur aufs eintragen ...

PHP:
$csv[1][0] = "1";
$csv[1][1] = "Maria";
$csv[1][2] = "Maier";
$csv[1][3] = "321";

$csv[2][0] = "2";
$csv[2][1] = "Christian";
$csv[2][2] = "Mueller";
$csv[2][3] = "213";
print_r($csv);
$csv[1][1] = "";
$csv[1][3] = "";
setCsv($file, $csv);
print_r($csv);
function setCsv($file, $array)
{
    $handle = fopen($file, "r+");
    foreach ($array as $values){
        fputcsv($handle, $values);
    }
    fclose($handle);
}

Mfg Jack
 
Zurück