【发布时间】:2018-03-06 12:27:00
【问题描述】:
我有一个数组$csvRows,如下所示。我想将该数组导出为 CSV。
Array
(
[0] => SingleModule Object
(
[module:SingleModule:private] => Module Object
(
[name:Module:private] => SimpleXMLElement Object
(
[0] => some string
)
[position:Module:private] => SimpleXMLElement Object
(
[0] => 1000
)
[config:Module:private] => SimpleXMLElement Object
(
)
)
[moduleMeta:SingleModule:private] => ModuleMeta Object
(
[description:ModuleMeta:private] => description text
[featureOrUseCase:ModuleMeta:private] => feature or usecase text
[inputParam:ModuleMeta:private] => input Parameter text
[changedParam:ModuleMeta:private] => changed Parameter text
[newOutputParam:ModuleMeta:private] => new Output Param text
[commentOrNote:ModuleMeta:private] => comments Or Note text
)
)
[1] => SingleModule Object
(etc...)
我已经尝试过在this link 中找到的解决方案。这是我的代码示例:
$fileName = "../../data/modules.csv";
$output = fopen($fileName, 'w+');
foreach ( $csvRows as $file ) {
$result = [ ];
array_walk_recursive($file, function ($item) use (&$result) {
$result [] = $item;
});
fputcsv($output, $result);
}
fclose($output);
然后我得到以下错误:
PHP Recoverable fatal error: Object of class Module could not be converted to string ...in line where fputcsv is.
我通过手动创建一个简单的数组暂时解决了这个问题,如下所示,我在this link中找到了:
$csvRows = array(
array( 'row_1_col_1', 'row_1_col_2', 'row_1_col_3' ),
array( 'row_2_col_1', 'row_2_col_2', 'row_2_col_3' ),
array( 'row_3_col_1', 'row_3_col_2', 'row_3_col_3' ),
);
但我想将我的实际 $csvRows 对象数组导出为 CSV。我是一个新手程序员,所以任何建议和帮助将不胜感激。
【问题讨论】:
-
嗨,我已经尝试过您的建议,如下所示:
$str = json_encode($csvRows); $csvRows = json_decode($str, true); $fp = fopen("../../data/modules.csv", 'w+'); foreach ( $csvRows as $column ) { fputcsv($fp, $column); } fclose($fp);但我只有一个空的 csv 文件。有什么想法吗?
标签: php csv multidimensional-array fputcsv