为了账号安全,请及时绑定邮箱和手机立即绑定

在PHP中将数据从数组格式化为Json

在PHP中将数据从数组格式化为Json

PHP
一只名叫tom的猫 2022-11-04 16:33:02
为了向 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 fileif(!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,SalaryTiger NixonSystem Architect,,Edinburgh,5421,25/04/2011,$320800Garrett Winters,Accountant,Tokyo,8422,25/07/2011,$170750
查看完整描述

1 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

我已经修改了你的代码。请尝试一下。它正在工作。


我有删除标题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"]]}



查看完整回答
反对 回复 2022-11-04
  • 1 回答
  • 0 关注
  • 80 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信