Формат данных из массива в Json в PHP - PullRequest
0 голосов
/ 19 марта 2020

Чтобы отправить данные на запрос AJAX, мне нужно отправить данные в следующем формате:

{
    "columns": [
        [ "Name" ],
        [ "Position" ],
        [ "Office" ],
        [ "Extn." ],
        [ "Start date" ],
        [ "Salary" ]
    ],
    "data": [
    [
      "Tiger Nixon",
      "System Architect",
      "Edinburgh",
      "5421",
      "2011/04/25",
      "$320800"
    ],
    [
      "Garrett Winters",
      "Accountant",
      "Tokyo",
      "8422",
      "2011/07/25",
      "$170750"
    ]
  ]
}

Запрос работает, если я помещаю этот код в .txt, но цель моего кода - использовать данные из файла CSV ... вот почему я использую этот файл. php:

<?php

//import csv file
if(!empty($_FILES['csv_file']['name']))
{
$file_data = fopen($_FILES['csv_file']['tmp_name'], 'r');
  $csv = fgetcsv($file_data);
  //get header column  of csv file : 1rst line
  $heads = explode(';', $csv[0]);
    foreach ($heads as $head) {
     $json['columns'][] = [$head];
  }
//get  rows of csv file
 fgetcsv($file_data);
 while($row = fgetcsv($file_data))
 {
  $json['data'][] = array(
   $row[0],
   $row[1],
   $row[2],
   $row[3],
   $row[4],
   $row[5],
   $row[6],
   $row[7],
   $row[8],
   $row[9],
   $row[10],
  );
 }
echo json_encode($json);
 ?>

Подскажите, пожалуйста, что не так с моим кодом?

РЕДАКТИРОВАТЬ: и это файл .csv (источник данных)

Name,Position,Office,Extn.,Start date,Salary
Tiger NixonSystem Architect,,Edinburgh,5421,25/04/2011,$320800
Garrett Winters,Accountant,Tokyo,8422,25/07/2011,$170750

1 Ответ

2 голосов
/ 19 марта 2020

Я изменил ваш код. Пожалуйста, попробуйте это. Это работает.

У меня есть заголовок удаления foreach. Это не обязательно. Кроме того, удалите один-один массив, назначьте код в 2ed l oop и добавьте $json['data'][] = explode(';', $row[0]); код.

Вот модифицированный код.

<?php
//import csv file
if (!empty($_FILES['csv_file']['name'])) {
    $file_data = fopen($_FILES['csv_file']['tmp_name'], 'r');
    $csv = fgetcsv($file_data);

    //get header column  of csv file : 1rst line
    $json['columns'] = $csv;

    //get rows of csv file
    while ($row = fgetcsv($file_data)) {
        $json['data'][] = $row;
    }

    echo json_encode($json);
}
?>

=> Выход

Массив:

Array
(
    [columns] => Array
        (
            [0] => Name
            [1] => Position
            [2] => Office
            [3] => Extn.
            [4] => Start date
            [5] => Salary
        )

    [data] => Array
        (
            [0] => Array
                (
                    [0] => Tiger NixonSystem Architect
                    [1] => 
                    [2] => Edinburgh
                    [3] => 5421
                    [4] => 25/04/2011
                    [5] => $320800
                )

            [1] => Array
                (
                    [0] => Garrett Winters
                    [1] => Accountant
                    [2] => Tokyo
                    [3] => 8422
                    [4] => 25/07/2011
                    [5] => $170750
                )

        )

)

JSON :

{"columns":["Name","Position","Office","Extn.","Start date","Salary"],"data":[["Tiger NixonSystem Architect","","Edinburgh","5421","25\/04\/2011","$320800"],["Garrett Winters","Accountant","Tokyo","8422","25\/07\/2011","$170750"]]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...