php按列读取csv数据

时间:2015-04-12 20:38:25

标签: php csv

我试图从.csv接收数据。这是我到目前为止的代码:

if(($handle = fopen("test.csv", "r")) !== FALSE){
    while(($data = fgetcsv($handle, 1000, ",")) !== FALSE){
    }
}

但是这会将我需要的所有数据放在$ data数组的第一个条目中。我需要做的是$data[1],然后从第二列获取所有值。我之前已经完成了,但这次我无法工作。我该怎么做?

修改

这是我的.csv文件结构

|  ID  |  Name    |
|------|----------|etc
|  1   |Product 1 |

这是文件http://imgur.com/BlaCvjo

的屏幕截图

使用echo $data[1]时,应该返回'产品1'

1 个答案:

答案 0 :(得分:0)

请具体到您的问题。无论如何,这些代码将帮助您解决问题。

<?php
$csv = array();
// check there are no errors
if($_FILES['csv']['error'] == 0){
    $name = $_FILES['csv']['name'];
    $ext = strtolower(end(explode('.', $_FILES['csv']['name'])));
    $type = $_FILES['csv']['type'];
    $tmpName = $_FILES['csv']['tmp_name'];

    // check the file is a csv
    if($ext === 'csv'){
        if(($handle = fopen($tmpName, 'r')) !== FALSE) {
            // necessary if a large csv file
            set_time_limit(0);

            $row = 0;

            while(($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
                // number of fields in the csv
                $col_count = count($data);

                // get the values from the csv
                $col1 = $data[0];
                $col2 = $data[1];
                $col3 = $data[2];
                $col4 = $data[2];               
                // inc the row
                $row++;
            }   

            fclose($handle);
        }
    }
}

?>