PHP fgetcsv 二维数组

PHP fgetcsv 2 dimensional array

我看过几个类似的例子,但还是不行。 csv数据文件"data1.csv"如下:

symbol,num1,num2
QCOM,10,100
QCOM,20,200
QCOM,30,300
QCOM,40,400
CTSH,10,111
CTSH,20,222
CTSH,30,333
CTSH,40,444
AAPL,10,11
AAPL,20,22
AAPL,30,33
AAPL,40,44

--end of file ----

$inputsymbol = QCOM ; // $inputsymbol will come from html.works fine.

我想读取 csv 文件并获取与 symbol = QCOM 匹配的行。并将其转换为数组 $data1 以绘制 num1 和 num2 的折线图,如下所示。

$data1 = array ( 
array(10,100),
array(20,200),
array(30,300),
array(40,400)
);

注意:1. csv 数据文件中每个csv 行的末尾没有逗号。 2. 同一文件中的多个符号。所以只匹配符号的行
应该包含在 $data1.

==============

马克的解决方案解决了这个问题。现在为了加快数据访问速度(对于非常大的 csv 文件),我已经(外部)格式化了如下相同的数据。问题是如何自动提取headers然后用于data1数组?

symbol,1/1/2015,1/2/2015,1/3/2015,1/4/2015
QCOM,100,200,300,400
CTSH,11,22,33,44
AAPL,10,11,12,13

注意header中字段的数量是不固定的。 (每个月都会增加)。但数据也会相应增加。

不复杂:

$inputsymbol = 'QCOM';

$data1 = [];
$fh = fopen("data1.csv", "r"));
while (($data = fgetcsv($fh, 1024)) !== FALSE) {
    if ($data[0] == $inputsymbol) {
        unset($data[0]);
        $data1[] = $data;
    }
}
fclose($fh);

那么您到底是哪里出了问题?