2015-12-15 4 views
2

Я пытаюсь экспортировать в CSV, JSON в следующем формате: JSON массив Экспорт в CSV в PHP

$json_file2{ 
      "errors": 
        { 
        "code":0, 
        "text":"" 
        }, 
      "results": 
        { 
        "resultado": 
        [ 
         { 
         "referencia":"00000", 
         "cantidad":"24", 
         "cantidad_proveedor":null, 
         "delivery_time":"delivery time 2 days" 
         }, 
         { 
         "referencia":"00001", 
         "cantidad":"24", 
         "cantidad_proveedor":"48", 
         "delivery_time":"" 
         }, 
         { 
         "referencia":"00098_1", 
         "cantidad":"96", 
         "cantidad_proveedor":null, 
         "delivery_time":"delivery time 4 days" 
         } 
        ] 
       } 
      } 

Мне нужно экспортировать в CSV

"referencia":"00000", 
"cantidad":"24", 
"cantidad_proveedor":null, 
"delivery_time":"delivery time 2 days" 

в этом формате:

"00000","24",null,"delivery time 2 days" 
"00001","24","48","" 
"00098_1","96",null,"delivery time 4 days" 
...... 

Я стараюсь поступать так, как я учусь

$decoded = json_decode($json_file2); 
$comments = $decoded->data[0]->results->resultado; 
$fp = fopen('stock2.csv', 'w'); 
foreach($comments as $comment){ 
    fputcsv($fp,$comment); 
} 

но всегда дает мне forea ошибки ch: Предупреждение: Недействительный аргумент, предоставленный foreach()

Где я делаю неправильно? Цистерны

ответ

2

нет поля массива данных в $ json_file2. Вы должны использовать $ decoded-> results-> resultado вместо этого. И литой $ комментариев как массив, как говорит Брайан.

Окончательный код выглядит следующим образом:

$decoded = json_decode($json_file2); 
$comments = $decoded->results->resultado; 
$fp = fopen('stock2.csv', 'w'); 
foreach($comments as $comment) { 
    fputcsv($fp, (array)$comment); 
} 

С учетом этого изменения вы получите что-то вроде этого:

00000,24,,"delivery time 2 days" 
00001,24,48, 
00098_1,96,,"delivery time 4 days" 

Может быть, вы должны написать свою собственную функцию fputcsv для того чтобы достигнуть желаемого результата wish, с нулем и числами с кавычками.

+0

PERFECT Ujin! БЛАГОДАРЯ! Я не могу дать вам положительный результат, не имея достаточной репутации :( – Juanjo

+0

@Juanjo Вы можете принять ответ, нажав на галочку слева от этого пункта. Это даст пользователю репутацию +15, и я верю, что вы дадите + 2. –

0

Вы должны передать массив в fputcsv. Используйте этот код:

fputcsv ($ fp, (array) $ comment);

+0

Предупреждение: Недействительный аргумент, предоставленный foreach() – Juanjo

 Смежные вопросы

  • Нет связанных вопросов^_^