【问题标题】:Count values in CSV计算 CSV 中的值
【发布时间】:2013-02-04 20:51:19
【问题描述】:

.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

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

谁能帮忙?

【问题讨论】:

标签: php arrays csv


【解决方案1】:

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

使用它,您可以在数组上编写一个循环,对值进行计数(在伪代码中):

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

【讨论】:

    【解决方案2】:

    这应该可以将文件内容读取到 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 否

    【讨论】:

    • 无法让这个工作。代码自己找到所有唯一响应也很重要。
    • 这应该可以帮助您入门。我不会写完整的解决方案。尝试在此处构建此答案或任何其他答案。如果您无法解决,请报告一个不同的深度问题。
    猜你喜欢
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 2023-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    相关资源
    最近更新 更多