Уравновешивает массив JSON с несколькими предметами - как поместиться в одну ячейку CSV?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Уравновешивает массив JSON с несколькими предметами - как поместиться в одну ячейку CSV?

Сообщение Anonymous »

Я должен получить некоторые данные через API, используя Curl и сохранить его в файл CSV. Пример набора данных json, который я получаю при подключении через API: < /p>
{
"id": 24598942,
"created_at": "2021-08-16T15:59:25.345+01:00",
"success": true,
"payment_amount": 90,
"invoice_ids": [
1646569091
],
"ref_num": "2858",
"payment_method": "BACS"
}
< /code>
my php -код: < /p>
$url = 'https://example.com/?page='.$x;

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', $auth_key_here));
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$query = curl_exec($curl);
curl_close($curl);

$decoded = json_decode($data, true);

if ($x == 1) {
$fp = fopen($csv, 'w');
fputcsv($fp, array_keys($decoded[0]));
fclose($fp);
}

$fp2 = fopen($csv, 'a');

foreach ($decoded as $fields) {
fputcsv($fp2, array_flatten($fields));
$row_count++;
}
fclose($fp2);

function array_flatten($nonFlat) {
$flat = array();
foreach (new RecursiveIteratorIterator(new RecursiveArrayIterator($nonFlat)) as $k=>$v) {
$flat[$k] = $v;
}
return $flat;
}
< /code>
Это дает мне «vingeice_ids», чтобы выровнять, чтобы я мог видеть фактические данные в файле CSV, а не «массив». Но некоторые записи содержат несколько идентификаторов счета-фактуры в массиве: < /p>
{
"id": 21016112,
"created_at": "2020-08-17T16:00:55.552+01:00",
"success": true,
"payment_amount": 90,
"invoice_ids": [
1646540900,
1646277088
],
"ref_num": "ZN905TNVCNGQY",
"payment_method": "Credit Card"
}
< /code>
Этот файл CSV забивает, перемещая некоторые данные в неправильные столбцы, как изображено здесь:
csv -файл < /p>
Как изменить код PHP, так что плоский массив с несколькими идентификаторами счета подходит для одного столбца в файле CSV? < /p>

Подробнее здесь: https://stackoverflow.com/questions/797 ... e-csv-cell
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»