如何使用 FputCSV 将数组转换为数组列表以进行 CSV 导出?
How to convert Array to Array list for CSV export using FputCSV?
我需要将包含多个结果的数组转换为 CSV 文件,但我很难获得有效的输出。
经过一些调试后,我意识到我没有为 fputcsv 生成一个有效的数组列表来迭代 .
首先,这是我数组的 var_dump 的说明性示例:
object(stdClass)#83 (3) {
["Username"]=>
string(8) "username"
["FullName"]=>
bool(false)
["ContactPhoneNumber"]=>
bool(false)
object(stdClass)#84 (3) {
["Username"]=>
string(8) "username2"
["FullName"]=>
bool(false)
["ContactPhoneNumber"]=>
bool(false)
object(stdClass)#85 (3) {
["Username"]=>
string(8) "username3"
["FullName"]=>
bool(false)
["ContactPhoneNumber"]=>
bool(false)
这是我在研究如何将数组转换为 CSV 后尝试的代码:
$file = fopen($CsvFile, 'w');
fputcsv($file, array_keys($HeaderFields)); // Headers
$data = array($DataRecord);
foreach ($data as $row) {
$row = [];
array_walk_recursive($row, function ($item) use (&$row) {
$row[] = $item;
});
fputcsv($file, $row);
}
fclose($file);
我还尝试使用 fputcsv 中的标准示例:
$file = fopen($CsvFile, 'w');
$data = array($DataRecord)
foreach ($data as $row) {
fputcsv($file, $row);
}
fclose($file);
显然我做错了一些事情,未能生成用于在 csv 文件中插入多个数组行的正确格式。
如果我用这个替换我的 $data 数组:
$data = array(array('Data 11', 'Data 12', 'Data 13', 'Data 14', 'Data 15'));
然后 fputcsv 按预期工作。
所以我需要将我的数组转换成这种格式,以便 fputcsv 可以遍历它并保存每一行。
我怎样才能做到这一点?
谢谢
只需将对象转换为数组 (array)
:
$file = fopen($CsvFile, 'w');
fputcsv($file, get_object_vars(reset($data)));
foreach ($data as $row) {
fputcsv($file, (array)$row);
}
fclose($file);
如果对象属性与 $HeaderFields
不同,则使用 $HeaderFields
。
我需要将包含多个结果的数组转换为 CSV 文件,但我很难获得有效的输出。 经过一些调试后,我意识到我没有为 fputcsv 生成一个有效的数组列表来迭代 .
首先,这是我数组的 var_dump 的说明性示例:
object(stdClass)#83 (3) {
["Username"]=>
string(8) "username"
["FullName"]=>
bool(false)
["ContactPhoneNumber"]=>
bool(false)
object(stdClass)#84 (3) {
["Username"]=>
string(8) "username2"
["FullName"]=>
bool(false)
["ContactPhoneNumber"]=>
bool(false)
object(stdClass)#85 (3) {
["Username"]=>
string(8) "username3"
["FullName"]=>
bool(false)
["ContactPhoneNumber"]=>
bool(false)
这是我在研究如何将数组转换为 CSV 后尝试的代码:
$file = fopen($CsvFile, 'w');
fputcsv($file, array_keys($HeaderFields)); // Headers
$data = array($DataRecord);
foreach ($data as $row) {
$row = [];
array_walk_recursive($row, function ($item) use (&$row) {
$row[] = $item;
});
fputcsv($file, $row);
}
fclose($file);
我还尝试使用 fputcsv 中的标准示例:
$file = fopen($CsvFile, 'w');
$data = array($DataRecord)
foreach ($data as $row) {
fputcsv($file, $row);
}
fclose($file);
显然我做错了一些事情,未能生成用于在 csv 文件中插入多个数组行的正确格式。
如果我用这个替换我的 $data 数组:
$data = array(array('Data 11', 'Data 12', 'Data 13', 'Data 14', 'Data 15'));
然后 fputcsv 按预期工作。
所以我需要将我的数组转换成这种格式,以便 fputcsv 可以遍历它并保存每一行。
我怎样才能做到这一点?
谢谢
只需将对象转换为数组 (array)
:
$file = fopen($CsvFile, 'w');
fputcsv($file, get_object_vars(reset($data)));
foreach ($data as $row) {
fputcsv($file, (array)$row);
}
fclose($file);
如果对象属性与 $HeaderFields
不同,则使用 $HeaderFields
。