0

我有包含团队名称的 CSV 列表(这是一行):

Teams
Red
Green | Red | Yellow
Red
Yellow | Green | Yellow
Red
Green
Yellow | Yellow | Red
Red
Green
Red
Yellow

我需要能够计算每种颜色并计算前 4 种颜色和它们出现的次数。

我怎样才能做到这一点?例如,如果我尝试使用:

   $teams = file('count.csv');
   $count[] = (array_count_values($colors));
   print_r($count);

我得到:

   Array ( [0] => Array ( [Teams ] => 1 
   [Red ] => 5 [Green | Red | Yellow ] => 1 [Yellow | Green | Yellow ] => 1 [Green ] => 2      [Yellow | Yellow | Red ] => 1 [Yellow] => 1 ) )

这不是很有用。并且我怎么能将这些山谷相互比较以获得前 4 名?

任何已知的技巧如何做到这一点?先感谢您!

好的,再试一次:

    $inputfile = 'count.csv';
    $inputHandle = fopen($inputfile, "r");

    while (($data = fgetcsv($inputHandle, 1024, ",")) !== FALSE) {

    $teams = $data[0];

    $teams = explode('|', $teams);

    }

    $count[] = (array_count_values($teams));
    print("<pre>".print_r($count, true)."</pre>");

我明白了

   Array
   (
     [0] => Array
       (
           [Yellow] => 1
       )

   )

我究竟做错了什么?

4

1 回答 1

0

如果我理解正确,您有一行数据,其中 | 作为分隔符。

这是一个非常粗略的快速'n'dirty 解决方案。

我要做的是首先使用strpos()substr()获取颜色,然后使用开关盒来增加每种颜色的计数器。要获得前 4 个,创建一个包含四个字符串的数组,插入前四种颜色,然后将剩余颜色与数组中的每个值进行比较,如果您要比较的颜色的计数高于数组中的任何值。

这听起来有点令人困惑,所以如果您希望我编写一些示例代码来演示这一点,请告诉我。

于 2013-07-05T19:45:58.937 回答