【发布时间】:2012-09-29 22:58:39
【问题描述】:
我有 2 个表:dt_times 和 dt_reports
dt_times 包含时间列表,dt_reports 包含相关时间的投票(正/负)。
我的代码执行以下操作:
- 选择今天之前的所有时间
- 对于每个时间 - 计算保证金
((positive-negative)/positive)*100 - 结果存储在数组中
所有迭代后,这里是id => margin的var_dump
array(8) {
[111]=> int(100)
[110]=> int(-100)
[108]=> int(-100)
[100]=> int(100)
[97]=> int(100)
[92]=> int(100)
[59]=> float(-71.4285714286)
[58]=> float(-50)
}
我需要选择最高边距,其中 id 也是最高的。因为您可以看到 111、100、97 和 92 - 都具有相同的 100 值。
到目前为止,我的代码是这样的:
while ($row = mysql_fetch_array($result)) {
//Get values for quality
//calculate margin
$arr[$row['id']] = $margin;
$arr2[$margin] = $row['id'];
}
$timeId = $arr2[max($arr)];
然而,在所有循环之后,$timeId 是 92,这是数组中最后一个值为 100 的 id
我认为 array_keys 可能是答案,但为了我一生的挚爱,我无法弄清楚它们 =(
【问题讨论】:
-
为什么不从循环中的键和值中获取平均值?
-
您也可以发布您的查询吗?也许您应该更愿意让数据库为您完成工作。
-
您可以通过更改查询来实现它。
标签: php arrays while-loop