Я ценю, что по этому вопросу уже много вопросов. Но, поскольку я не разработчик PHP, я изо всех сил пытаюсь заставить что-то работать для моей конкретной структуры объекта. У меня довольно плоская структура JSON, которая хорошо читается на PHP. Все, что мне нужно сделать, это пройти через массив объектов, создать заголовки CSV из ключей в первом объекте (они все одинаковые), а затем записать каждую строку CSV, используя все свойства объекта. Вот мои данные PHP:Напишите 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);
?>
Спасибо всем за помощь. Удивительное сообщество!
Это больше похоже на это! Я почти там. Я просто пытаюсь получить этот начальный массив ключей объектов. –
Я обновляю свой последний пример полностью динамичным способом хранения заголовков в CSV. Если вы собираетесь изменить свойства своих объектов, CSV будет следовать за правильными заголовками. Обратите внимание, что для создания заголовков CSV требуется только свойства первого объекта в массиве. – Rein
Спасибо, чувак. Это была помощь, в которой я нуждался. Мне пришлось немного подправить его и обновить свой вопрос с помощью финального PHP, который работает. –