我见过几个类似的例子,但它仍然没有用。 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
请注意,标头中的字段数不固定。 (它会每月增加)。但数据也会相应增加。
答案 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);
那你究竟在哪里遇到这个问题?