1

我有一个数组,每个数组在数据库中都有不同的总和(可能其中一些是空的或者没有记录)

我需要知道哪一个的总和比所有其他的都大(在我的阵列上)并将那个放在 $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);
    }
}

但它只显示新的是否比旧的具有更大的价值,而不是比所有的都大

任何帮助表示赞赏

4

1 回答 1

4

我会完全消除循环并这样做:

$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 或将来会得到支持的东西。

您还应该学习如何测试数据库查询的失败条件。我的例子很简单,但生产代码应该测试查询和获取操作的成功/失败。

于 2013-01-09T19:47:12.777 回答