我有一个元素数组,每个元素都有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”的次数。后来,我将要弄清楚哪一个最有效。我该如何进行这种迭代?
如果令人困惑,请提出问题!我很困惑自己......!
答案 0 :(得分:4)
如果这是在数据库中,您可以使用此SQL:
SELECT question_id, SUM(value = 1) AS value
FROM mytable
GROUP BY question_id
ORDER BY value DESC
LIMIT 1;
SUM(value = 1)
计算每个yesno
值的出现次数等于1; GROUP BY question_id
每个问题的数量为#1 答案 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 @
会抑制该行中生成的通知和警告。