0

チーム名を含むCSVリストがあります(これは1行です):

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を取得できますか?

これを実現する方法を知っているトリックはありますか? 前もって感謝します!

OK 別の試み:

    $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

私の理解が正しければ、| を使用して 1 行のデータが得られます。区切り文字として。

これは非常に大雑把なクイックアンドダーティ ソリューションです。

私がすることは、最初に と を使用strpos()substr()て色を取得し、スイッチケースを使用して各色のカウンターをインクリメントすることです。上位 4 つを取得するには、4 つの文字列を保持する配列を作成し、最初の 4 つの色を挿入してから、残りの色を配列内の各値と比較し、比較している色のカウントがより多い場合は配列内の値を上書きします。配列内の任意の値。

これは少しわかりにくいので、これを示すサンプル コードを書いてほしい場合はお知らせください。

于 2013-07-05T19:45:58.937 に答える