使用第一行作为键将CSV读入二维数组

时间:2018-03-26 18:57:41

标签: php arrays csv dimensional

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

titleA,titleB,titleC

data1A,data1B,data1C

data2A,data2B,data3C

预期的OUTPUT是:

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个数组。

2 个答案:

答案 0 :(得分:2)

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

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

    while (($data = fgetcsv($handle, 1000)) !== FALSE) {
        $twoDarray[] = array_combine($titles, $data);
    }
    fclose($handle);
}

答案 1 :(得分:-1)

您可以将firslt作为标题,然后将其与每行合并。

$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);
}