我熟悉创建CSV,然后使用fputcsv
等功能或使用fwrite
手动添加行。 IE:
fwrite($fh, $facility . "\r\n");
fwrite($fh, $s . " - " . $e . "\r\n");
fwrite($fh, "\r\n");
fwrite($fh, "\r\n");
foreach ($first_column as $f){
fwrite($fh, $f . "," . "\r\n");
}
我的$first_column
数组看起来像:
$first_column = array(
'Chocolate Milk',
'White Milk',
'Orange Juice',
'Apple Juice',
);
它会创建一个类似于此的文件:
West Middle School
5/1/2013 - 5/3/2013
Chocolate Milk,
White Milk,
Orange Juice,
Apple Juice,
我想根据日期在下一个字段中添加数据。数据看起来与此类似:
$second column['05/01/2013'] = array(5,3,2,2);
$third column['05/02/2013'] = array(5,1,3,5);
然后我可以遍历每个日期,并将值与$first_column
映射匹配。
可以这样做吗?或者我必须逐行编写数据,如:
$data_row['chocolate milk'] = array(5,5,3,6);
$data_row['white milk'] = array(3,1,5,0);
我想要的CSV会是这样的:
West Middle School
5/1/2013 - 5/3/2013
,5/1/2013,5/2/2013
Chocolate Milk,5,5
White Milk,3,1
Orange Juice,2,3
Apple Juice,2,5
答案 0 :(得分:1)
您可以以列为基础在程序中包含数据。但是以这种方式将它们写入文件并不是最佳的。更好的方法是在内存中创建csv结构,然后按行顺序存储它。
但是,您可以将它们存储在col-by-col中。只写第一列。关闭文件。重新打开文件,逐行加载并附加到每行第二列的末尾。这为你创造了新的“线”。将其写入新文件....并重复此操作直到完成。这是程序的最快解决方案,如果你想要逐个aproach。当然,这种方法的效率很差。