我有一个数组,每个数组在数据库中都有不同的总和(也许其中一些是空的或者没有记录)
我需要知道哪一个的总和比所有其他的(在我的阵列上) 并将那个放在 $bigger 变量中,($bigger = $value)
我的尝试:
$new = 0;
$myarray = array('2', '5', '17', '55');
foreach($myarray as $value) {
$before = intval($new);
$query = mysql_query("SELECT SUM(total) AS totals FROM table WHERE id='$value'");
$result = mysql_fetch_assoc($query);
$new = intval($result['totals']);
if ($new > $before){
$biggest=intval($value);
}
}
但它只显示新的是否比旧的有更大的值(value),而不是比所有的都大
感谢任何帮助
最佳答案
我会完全消除循环并这样做:
$myarray = array('2', '5', '17', '55');
$query = "SELECT SUM(total) AS totals FROM table WHERE id IN (" . implode(', ', $myarray) . ") GROUP BY id ORDER BY totals DESC LIMIT 1";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
请注意,如果您希望按排序顺序接收所有 ID 的数据,您只需删除 LIMIT
子句,并添加一个循环来读出结果集的每一行。
我还建议不要使用 mysql_*
函数,因为它们已被弃用。如果你刚开始学习 PHP,你应该学习使用 mysqli_*
函数、PDO 或将来会支持的东西。
您还应该学习如何测试数据库查询的失败情况。我的示例很简单,但生产代码应测试查询和提取操作的成功/失败。
关于php - 我如何计算数组中的哪个值在数据库中具有更大的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14245109/