如何将数组转换为数组列表的CSV导出使用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代替。

最新更新