我想构建一个数组以使用变量创建CSV文件。 $ arraybuild变量将从搜索中收集行,因此永远不会有相同数量的行。
$arraybuild = "'aaa,bbb,ccc,dddd',";
$arraybuild .= "'123,456,789',";
$arraybuild .= "'\"aaa\",\"bbb\"'";
$list = array
(
$arraybuild
)
;
$file = fopen("contacts.csv","w");
foreach ($list as $line)
{
fputcsv($file,explode(',',$line));
}
fclose($file);
问题是结果没有将行分开,而是将它们全部放在同一行中。
我想得到
aaa,bbb,ccc,dddd 123,456,789 “ aaa”,“ bbb”
我得到的是
aaa bbb ccc dddd 123456789“ aaa”“ bbb”
全部在单独的列中
有人可以帮忙吗?
答案 0 :(得分:3)
将每行推到一个数组中,而不是连接成一个字符串,然后循环并添加到csv
$arraybuild[] = "'aaa,bbb,ccc,dddd',";
$arraybuild[] = "'123,456,789',";
$arraybuild[] = "'\"aaa\",\"bbb\"'";
$file = fopen("contacts.csv","w");
foreach ($arraybuild as $line) {
fputcsv($file, explode(',', $line));
}
fclose($file);
答案 1 :(得分:1)
在您的代码中,您正在将所有值连接到一个字符串,并用,
分隔。之后,您将创建一个数组,其中包含一个元素(该长字符串)。
因此,您将所有这些都放在同一行上就不足为奇了。
要分隔行,应在$list
数组内创建单独的数组。每个包含的数组都将在新行上。
尝试一下:
<?php
$arraybuild1 = "'aaa,bbb,ccc,dddd',";
$arraybuild2 = "'123,456,789',";
$arraybuild3 = "'\"aaa\",\"bbb\"'";
$list = array
(
explode(',', $arraybuild1),
explode(',', $arraybuild2),
explode(',', $arraybuild3)
);
$file = fopen("contacts.csv", "w");
foreach ($list as $fields) {
fputcsv($file, $fields);
}
fclose($file);