簡體   English   中英

用PHP將數組中的數據格式化為Json

[英]Format datas from array to Json in PHP

為了將數據發送到 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 文件中的數據。這就是我使用此 file.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);
 ?>

你能告訴我我的代碼有什么問題嗎?

編輯:這是file.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

我已經修改了你的代碼。 請嘗試一下。 它正在工作。

我已經刪除了標題foreach 這不是必需的。 此外,刪除 2ed 循環中的一對一數組分配代碼並添加$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"]]}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM