如何在for循环中跟踪基数?

时间:2013-02-23 09:24:14

标签: php mysql arrays for-loop

enter image description here我有一个元素数组,每个元素都有1或0.我想遍历每个元素并计算哪些元素具有最多的1。

所以我有三个领域:

id,question,yesno

值如下所示:

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

这就是它的要点。现在,我想计算中间列中哪些元素在第三列中具有最多的1。用另一种方式解释它。我想迭代for循环并计算中间数字为“1”的次数。后来,我将要弄清楚哪一个最有效。我该如何进行这种迭代?

如果令人困惑,请提出问题!我很困惑自己......!

2 个答案:

答案 0 :(得分:4)

如果这是在数据库中,您可以使用此SQL:

SELECT question_id, SUM(value = 1) AS value
FROM mytable
GROUP BY question_id
ORDER BY value DESC
LIMIT 1;
  1. SUM(value = 1)计算每个yesno值的出现次数等于1;
  2. 使用GROUP BY question_id每个问题的数量为#1
  3. 然后根据出现次数按降序排列(第一次最高)
  4. 拿第一项。

答案 1 :(得分:1)

如果您仍然希望在PHP中执行此操作:

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

我们创建一个空数组,然后将$v['value']添加到此数组中具有键$v['movie_id']的项目中。如果密钥尚不存在,则使用值0创建密钥,并根据您的PHP设置显示通知。位于PHP命令前面的at-sign @会抑制该行中生成的通知和警告。