Php 最佳方法:解析CSV文件并使用AJAX将其传回前端

Php 最佳方法:解析CSV文件并使用AJAX将其传回前端,php,javascript,ajax,json,Php,Javascript,Ajax,Json,我有一个CSV文件,上传到我的服务器上,PHP脚本将通过AJAX解析并将输出返回到JavaScript CSV文件由两行组成。第一行包含列名,第二行包含数据。我正在尝试编写一个脚本,以Javascript可以使用的形式对其进行解析,以生成用这些数据填充的文本字段和标签。我目前的方法是: if ( $_FILES['parameter_file']['tmp_name'] ) { $paramfile = fopen($_FILES['parameter_file']['tmp_name

我有一个CSV文件,上传到我的服务器上,PHP脚本将通过AJAX解析并将输出返回到JavaScript

CSV文件由两行组成。第一行包含列名,第二行包含数据。我正在尝试编写一个脚本,以Javascript可以使用的形式对其进行解析,以生成用这些数据填充的文本字段和标签。我目前的方法是:

if ( $_FILES['parameter_file']['tmp_name'] ) {

    $paramfile = fopen($_FILES['parameter_file']['tmp_name'], 'r');
    $header = fgets($paramfile);
    $temp = explode(',', str_replace('"', '', rtrim(ltrim($header))));

    $userdata = fgets($paramfile);
    $temp2 = explode(',', str_replace('"', '', rtrim(ltrim($userdata))));

    for ($k = 0; $k <= sizeof($temp) - 1; $k++) {
        $userparam[strtolower($temp[$k])] = $temp2[$k];
    }

    fclose($paramfile);
}
if($\u FILES['parameter\u file']['tmp\u name'])){
$paramfile=fopen($_FILES['parameter_file']['tmp_name'],'r');
$header=fgets($paramfile);
$temp=explode(“,”,str_replace(“,”,rtrim(ltrim($header)));
$userdata=fgets($paramfile);
$temp2=explode(‘,’,str_replace(‘,‘,’,rtrim(ltrim($userdata)));
对于($k=0;$k我宁愿使用/and then。在这两者之间,您总是可以洗牌数据,以使输出的JSON看起来像您想要的那样

一般来说,如果库函数可用,最好使用它们。

如他在给is your friend的评论中所述(顺便说一句,在PHP 5.3之前是不可用的)

代码应该是一个简单的as(错误处理留给OP):

给定以下内容的CSV文件:

id,name,value
1,first,value1
2,second,value2
3,third,value3
这将为您提供一个带有

array(
    0 => 'id',
    1 => 'name',
    2 => 'value'
)
以及一个带有

array(
    0 => array(
        'id'    => '1',
        'name'  => 'first',
        'value' => 'value1'
    ),
    1 => array(
        'id'    => '2',
        'name'  => 'second',
        'value' => 'value2'
    ),
    2 => array(
        'id'    => '3',
        'name'  => 'third',
        'value' => 'value3'
    )
)

根据需要调整代码…

因为他正在解析物理文件,
fgetcsv
可能是更好的选择。
array(
    0 => array(
        'id'    => '1',
        'name'  => 'first',
        'value' => 'value1'
    ),
    1 => array(
        'id'    => '2',
        'name'  => 'second',
        'value' => 'value2'
    ),
    2 => array(
        'id'    => '3',
        'name'  => 'third',
        'value' => 'value3'
    )
)