Я получаю JSON от завитка поста, и это выглядит примерно так:PHP JSON в CSV-файл с заголовками
{"status":"ok","sent":177,"delivered":0,"bounced":5,"hardBounced":0,"softBounced":5,"opened":[46,81],"clicked":[5,5],"notsent":[2,2],"notopened":126,"optout":0,"spam":0,"lastOpen":"1 day ago","lastClick":"13 days ago","lastOpenTS":1459808038636,"lastClickTS":1458752521593,"rebroadcast":0,"rebroadcastClick":0,"msgId":"s-04ac-1603","subject":"Blah blah Conference and Exposition","title":"Blah followup 03.22.16","sentto":["l-160f"],"suppressedon":[]}
я редактирую оригинальный пост, чтобы показать прогресс с помощью тех комментариев:
для просмотра того, что преобразуется из JSON как строку в массив/объект:
$result = curl_exec($ch_list);
$jsonObj = print_r(json_decode($result, true));
var_dump($jsonObj);die();
что дает следующее:
Array
(
[status] => ok
[sent] => 177
[delivered] => 0
[bounced] => 5
[hardBounced] => 0
[softBounced] => 5
[opened] => Array
(
[0] => 46
[1] => 81
)
[clicked] => Array
(
[0] => 5
[1] => 5
)
[notsent] => Array
(
[0] => 2
[1] => 2
)
[notopened] => 126
[optout] => 0
[spam] => 0
[lastOpen] => 1 day ago
[lastClick] => 14 days ago
[lastOpenTS] => 1459808038636
[lastClickTS] => 1458752521593
[rebroadcast] => 0
[rebroadcastClick] => 0
[msgId] => s-04ac-1603
[subject] => AFSA Vehicle Finance Conference and Exposition
[title] => AFSA follow up 03.22.16
[sentto] => Array
(
[0] => l-160f
)
[suppressedon] => Array
(
)
)
На этом этапе я думаю, что я преобразовал его в массив, который должен привести к созданию файла csv, и я могу использовать код, рекомендованный всеми в таком количестве сообщений, и я получил ошибку , но это было исправлено выражением if после fopen. Все вместе это теперь создает CSV-файл с ничего внутри него:
$result = curl_exec($ch_list);
$jsonObj = print_r(json_decode($result));
if(!file_exists('/tmp/' . $msgId . '_' . $yearMonComb . '.csv')) {
$f = fopen('/tmp/' . $msgId . '_' . $yearMonComb . '.csv', 'w');
if (is_array($jsonObj) || is_object($jsonObj)) {
$firstLineKeys = false;
foreach ($jsonObj as $line) {
if (empty($firstLineKeys)) {
$firstLineKeys = array_keys($line);
fputcsv($f, $firstLineKeys);
$firstLineKeys = array_flip($firstLineKeys);
}
fputcsv($f, array_merge($firstLineKeys, $line));
}
}
fclose($f);
}
Пожалуйста вывесить выход из 'print_r ($ strToArr)', чтобы мы могли видеть то, что вы переходя в 'fputcsv()' (который, как ожидается, будет простым одномерным a rray) –
Вложение 'json_encode()' внутри 'json_decode()' немного подозрительно - каково исходное содержимое '$ result'? Пожалуйста, напишите 'var_dump ($ result)' также. Если это не то, что может быть закодировано json, это вернет 'false', а' json_decode() 'в свою очередь не приведет к чему-то, что можно использовать с помощью' fputcsv() '. –
print_r ($ strToArr) производит то же самое, что и print_r (результат). Я предполагаю, что я не делаю массив вообще – kronus