【发布时间】:2016-02-12 14:04:12
【问题描述】:
我很感激已经有很多关于这个主题的问题。但是,由于我不是 PHP 开发人员,所以我很难让任何东西适用于我的特定对象结构。我有一个非常扁平的 JSON 结构,可以很好地读入 PHP。我需要做的就是遍历对象数组,从第一个对象中的键创建 CSV 标题(它们都是相同的),然后使用所有对象属性编写 CSV 的每一行。下面看一下我的 PHP 数据:
Array
(
[0] => stdClass Object
(
[record id] => -KA9S-beTbe9LIPBm_xK
[timestamp] => Wed Feb 10 2016 10:12:20 GMT+0100
[user id] => 33037t23nxyx1x5k
[user age] => 18-24
[user gender] => M
[user q1] => Yes
[user q2] => Yes
[user q3] => more
[answer q1 value] => 1
[answer q1 confidence] => 3
[answer q1 duration] => 262412
[answer q2 value] => 1
[answer q2 confidence] => 3
[answer q2 duration] => 1959
[answer q3 value] => 0
[answer q3 confidence] => 3
[answer q3 duration] => 2939
[answer q4 value] => 1
[answer q4 confidence] => 2
[answer q4 duration] => 1868
[answer q5 value] => 1
[answer q5 confidence] => 2
[answer q5 duration] => 2196
)
因此,您可以看到它应该非常简单。键是 CSV 单元格标题,然后是每条记录的一行。
我希望有人可以帮助我。我根本不懂 PHP。
更新:这是我最新的 PHP 文件。这行得通。我必须将对象转换为数组才能获取密钥:
<?php
$data = $_POST['data'];
$response = json_decode($data);
$records_arr = $response->records;
$fp = fopen('records.csv', 'w');
$i = 0;
foreach ($records_arr as $record) {
// $record is an object so create an array
$record_arr = array();
foreach ($record as $value) {
$record_arr[] = $value;
}
if($i == 0){
fputcsv($fp, array_keys((array)$record));
}
fputcsv($fp, array_values($record_arr));
$i++;
}
fclose($fp);
echo print_r($records_arr);
?>
感谢大家的帮助。很棒的社区!
【问题讨论】: