PHP fgetcsv 2维数组

时间:2015-03-25 14:28:52

标签: php fgetcsv

我见过几个类似的例子,但它仍然没有用。 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文件),我(外部)格式化相同的数据如下。问题是它如何自动提取标题然后为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

请注意,标头中的字段数不固定。 (它会每月增加)。但数据也会相应增加。

1 个答案:

答案 0 :(得分:0)

并不复杂:

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

那你究竟在哪里遇到这个问题?