I have this associative array with a key “key1” and another “key2”:
{ id : 1, name : "Rob", key1 : "bla" }, { id : 2, name : "Mat", key1 : "blabla" }, { id : 3, name : "Tom", key2 : "blablabla" }
this is my code for write the csv file:
// $csv is the array $fp = fopen('file.csv', 'wb'); foreach ($csv as $fields) { fputcsv($fp, $fields); } fclose($fp);
result is something like. All the information in line:
1,Rob,bla 2,Mat,blabla 3,Tom,blablabla
Is there a way to write these values in the column based on their key? The result should be:
id | name | key1 | key2 1 | Rob | bla | 2 | Mat | blabla | 3 | Tom | | blablabla
Advertisement
Answer
You can do this with a loop saving all your table keys. Then you check all the keys on each line, if the key is missing, create it with an empty string !
$fp = fopen('file.csv', 'wb'); $savedKeys = [] ; foreach ($csv as $getKey) { $savedKeys = array_merge($savedKeys,array_keys($getKey)) ; } $savedKeys =array_unique($savedKeys) ; foreach ($csv as $fields) { foreach ($savedKeys AS $checkKey){ if (!isset($field[$checkKey])){ $field[$checkKey] = ''; } } fputcsv($fp, $fields); } fclose($fp);