以CSV格式计算值

时间:2013-02-04 20:51:19

标签: php arrays csv

.csv文件:

question1,question2,question3,question4,question5,question6,question7,question8,question9,question10
yes,response,response,response,response,response,response,response,response,response
yes,response2,response2,response2,response2,response2,response2,response2,response2,response2
no,response3,response3,response3,response3,response3,response3,response3,response3,response3

我想在php中获得此结果。

$ question =" the_question_goes_here"

问题1
是= 2
没有= 1

代码必须找到每个问题的唯一答案,并计算每个问题的数量。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

str_getcsv()可用于将csv字符串作为数组。

使用这个你可以在数组上写一个循环来计算值(伪代码):

counts = array;
//Loop over each row
for(row in csvrows){
     for(cell in row){
         counts[rowHeader][cellValue] = counts[rowHeader][cellValue]+1;
     }
}

答案 1 :(得分:0)

这应该可以将文件内容读入PHP

$data= array();    
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        foreach ($data as $position => $value)  {
            if($row == 1) {
                $data[$position]['question'] = $value;
                $data[$position]['yes'] = 0;
                $data[$position]['no'] = 0;
                continue;
            }
            if ($value == 'yes') {
                  $data[$position]['yes'] = $data[$position]['yes'] + 1
            } elseif ($value == 'no') {
                  $data[$position]['no'] = $data[$position]['no'] + 1
            }
        }
        $row++;            
    }        
    fclose($handle);
}

这将返回一个你可以像这样阅读的数组

  • 数组值
    • '问题'关键持有文字
    • 'yes'键持有numOf yes
    • 'no'key持有numOf no