1

在此处输入图像描述我有一个元素数组,每个元素都有 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”的次数。稍后,我将排序找出哪个最多。我该如何进行这种类型的迭代?

如有混淆请追问!我自己也糊涂了……!

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. 每个值出现的SUM(value = 1)次数yesno等于 1;
  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']。如果该键尚不存在,则使用 value 创建它0,并且根据您的 PHP 设置,将显示一条通知。放置在 PHP 命令前面的 at 符号@会抑制该行中生成的通知和警告。

于 2013-02-23T09:48:48.657 回答