2

我正在尝试读取 CSV 文件,其格式为:

titleA,titleB,titleC

data1A,data1B,data1C

data2A,data2B,data3C

预期的输出是:

Array
(
[0] => Array
(
[titleA] => data1A
[titleB] => data1B
[titleC] => data1C
)

[1] => Array
(
[titleA] => data2A
[titleB] => data2B
[titleC] => data2C
)

我尝试使用我在这里找到的东西:

if (($handle = fopen($filename, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$twoDarray[] = $data;
}
fclose($handle);
}

但它显示了 1 个包含所有标题的数组和其他 2 个包含数据的数组。

4

2 回答 2

2

您想阅读第一行并将其用作键并组合:

if (($handle = fopen($filename, "r")) !== FALSE) {    
    $titles = fgetcsv($handle, 1000);

    while (($data = fgetcsv($handle, 1000)) !== FALSE) {
        $twoDarray[] = array_combine($titles, $data);
    }
    fclose($handle);
}
于 2018-03-26T19:00:44.807 回答
-1

您可以将 firstlt 作为标题,然后将其与每一行结合起来。

$heading = array();
$heading_check =1;
if (($handle = fopen($filename, "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        if($heading_check){
            $heading = $data;
            $heading_check=0;
            continue;
        }

        $twoDarray[] = array_combine($heading,$data);
    }
fclose($handle);
}
于 2018-03-26T19:05:14.347 回答