Een regel aanpassen in een csv-file.

Status
Niet open voor verdere reacties.

ViktorDB

Gebruiker
Lid geworden
14 feb 2013
Berichten
8
Hallo,
Het is me ondertussen al gelukt om een csv file in te lezen en een regel toe te voegen maar hoe pas je een reeds ingelezen regel aan?

mijn csv ziet er ongeveer zo uit:

key1, waarde1, waarde2, waarde3, waarde4
key2, waarde5, waarde6, waarde7, waarde8
...

Ik zou dus de regel met een bepaalde key (bv nu key1) de waarde4 willen aanpassen naar waarde10.



Ik was al bezig om eerst de csv in te lezen met de volgende functie:

$a = array();
$f = fopen("gebruikers.csv", 'r');
while ($line = fgetcsv($f, 1000, ","))
{
$key = array_shift($line);
$a[$key] = $line;
}
fclose($f);

en dan krijg ik de csv als een array binnen volgens anderstaande manier:

Array ( [key1] => Array ( [0] => waarde1 [1] => waarde2 [2] => waarde3 [3] => waarde4 ) ) deze array heeft de naam $a

vervolgens haal ik de juiste lijn op met $b = $a[key1] en vervang ik de waarde $b[4] = $waarde10.
hierna steek ik de de lijn terug in de grote array $a[key1] = $b.

Nu is de volledige array $a van de csv wel correct aangepast maar hoe schrijf ik deze array nu weg naar mijn csv file?
 
Laatst bewerkt:
Ja dit heb ik geprobeerd maar dan gaat het deels fout.
Deze code gebruik ik:

$list = $a;

$fp = fopen('gebruikers.csv', 'w');

foreach ($list as $fields)
{
fputcsv($fp, $fields);
}

fclose($fp);


Het probleem hierbij is dat hij mijn key-waarde hierbij niet meer mee wegschrijft en dus enkel dit wegschrijft: Array ( [key1] => Array ( [0] => waarde1 [1] => waarde2 [2] => waarde3 [3] => waarde4 ) )
Hierdoor wordt de eerste kolom van mijn csv-file verwijderd wat niet de bedoeling is. :confused:

Ik zou de array moeten kunnen aanpassen zodat de key in de array zelf zit : Array ( [0] => key [1] => waarde1 [2] => waarde2 [3] => waarde3 [4] => waarde4 )
iemand die weet hoe dit moet, of is er een andere, makkelijkere manier?
 
Laatst bewerkt:
Meerdere. Je kunt unshiften en de key er weer voor plakken. Of een andere oplossing die wel eens gebruikt wordt is de array niet shiften en de "key" op array[0] laten.
 
Sorry maar ik ben nog niet zo lang bezig met php.

Ik heb de volledige $a array kunnen inlezen en ik heb elke aparte array kunnen aanpassen zodat de key op de eerste plaats komt met volgende functie:

foreach($a as $key => $waarde)
{
array_unshift($waarde, $key);
}

Hoe krijg ik steeds deze arrays in een grote array (zoals $a) zodak ik hem kan laten wegschrijven?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan