使用php并索引第一行和第一列从CSV加载数组

时间:2017-12-11 13:33:40

标签: php csv

我一直在寻找php array_column和array_map,但我仍然没有得到它!。

这是我用来加载我的CSV的代码

    <?PHP
        $row = 1;
        $faq = array(); //define the main array.

        if (($handle = fopen("file.csv", "r")) !== FALSE) {
            while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
                $num = count($data);
                $row++;

                for ($c = 0; $c < $num; $c++) {
                }
                $faq[] = $data; //add the row to the main array.
            }

            fclose($handle);
        }
    ?>

这就是我输出数据的方式:

echo $faq[1][13];

所以[1]是行,[13]是列。

但如果该信息不再在行[1]上,但我仍然希望找到该数据。 因此,如果我们说列和行0是ID /标题,我可以写

echo $faq['printing']['Hash_tag'];

[&#39;打印&#39;] =表示它在第0列找到该字的行

[&#39; Hash_tag&#39;] =表示列&#34; 13&#34;它在最上一行找到它。

可以肯定这是重复的,但是我一直在寻找这个并且我几乎放弃了,因为我无法弄明白。

1 个答案:

答案 0 :(得分:0)

我写了一个非常小的模板 - 没有错误检查(如代码中所示)所以请按照您认为合适的方式添加...

$fh = fopen("a.txt", "r");
$header = fgetcsv($fh);
$faq = [];
while ( $data = fgetcsv($fh))   {
    $faq [ $data[0] ] = array_combine($header, $data);
}

print_r($faq);

使用文件

运行
tag1,tag2
a,1
b,2
r,t

提供输出

Array
(
    [a] => Array
        (
            [tag1] => a
            [tag2] => 1
        )

    [b] => Array
        (
            [tag1] => b
            [tag2] => 2
        )

    [r] => Array
        (
            [tag1] => r
            [tag2] => t
        )

)