1

ここに画像の説明を入力それぞれが 1 または 0 を持つ要素の配列があります。すべての要素を調べて、1 が最も多い要素を数えたいと思います。

だから私は3つのフィールドを持っています:

ID、質問、はいいいえ

値は次のようになります。

1,1,0
1,2,0
1,3,1
1,4,0
1,5,1
2,1,0
2,2,1
2,3,1
2,4,0
2,5,1
3,1,0
3,2,1
3,3,1
3,4,0
3,5,1

それが要点です。ここで、中央の列のどの要素が 3 列目に最も多く 1 を持っているかを数えたいと思います。それを説明する別の方法で。forループを繰り返して、真ん中の数字が「1」になった回数を数えたいです。後で、どれが最も多いかを判断するために並べ替えます。この種の反復を行うにはどうすればよいですか?

わかりにくいところは質問してください!自分でも迷ってます…!

4

2 に答える 2

4

これがデータベース内にある場合は、次の SQL を使用できます。

SELECT question_id, SUM(value = 1) AS value
FROM mytable
GROUP BY question_id
ORDER BY value DESC
LIMIT 1;
  1. は、 1 に等しい各値のSUM(value = 1)出現回数をカウントします。yesno
  2. それを使用GROUP BY question_idすると、質問ごとに 1 位にカウントされます
  3. 次に、出現回数に基づいて降順で並べ替えます(最初が最も高い)
  4. 最初のアイテムを取ります。
于 2013-02-23T09:37:43.187 に答える
1

それでも PHP で実行したい場合:

$counts=array();
foreach($arr as $v) @$counts[$v['movie_id']]+=$v['value'];

空の配列を作成し、この配列$v['value']のキーを持つアイテムに追加します。$v['movie_id']キーがまだ存在しない場合は、 value0で作成され、PHP の設定に応じて通知が表示されます。@PHP コマンドの前にあるアットマークは、その行で生成される通知と警告を抑制します。

于 2013-02-23T09:48:48.657 に答える