1

所以我有一个查询,它在 PHP 中返回以下结果,我正在尝试添加 的总数hours_played,我尝试过array_sum()但似乎不起作用,我希望能够将 的值添加hours_played为 11这样我就可以将它传递给另一个函数:

Array
(
   [id] => 1
   [team_id] => 1
   [hours_played] => 1
)
Array
(
   [id] => 2
   [team_id] => 1
   [hours_played] => 4
)
Array
(
   [id] => 3
   [team_id] => 1
   [hours_played] => 6 
)

我有点迷茫,我是否需要将可用的数组存储在另一个数组中才能做到这一点?上面的结果来自一个 sql 查询,是变量 时print_r在页面上打印的结果。$row

$sql = "SELECT * FROM table1 WHERE team_id = 1";
$res = mysql_query($sql);

while($row = mysql_fetch_assoc($res)){
   print_r($row);
}
4

4 回答 4

3

您可以hours_played在获取结果并将它们分配到数组后对所有列求和,如下所示

$sql = "SELECT * FROM table1 WHERE team_id = 1";
$res = mysql_query($sql);
$result = array();
while($row = mysql_fetch_assoc($res)){
   $result[] = $row;
}

$sum = array_sum(array_column($result, "hours_played"));
echo $sum;

..或者您可以在循环结果时对其进行总结。

$sql = "SELECT * FROM table1 WHERE team_id = 1";
$res = mysql_query($sql);
$sum = 0;
while($row = mysql_fetch_assoc($res)){
    $sum += $row['hours_played'];
}

echo $sum;

或者,如果您只需要播放的总小时数,您可以直接在一个查询中完成,COUNT()在 MySQL 中使用。

$sql = "SELECT SUM(hours_played) as sum_hours_played FROM table1 WHERE team_id = 1";
$res = mysql_query($sql);

$row = mysql_fetch_assoc($res);
echo $row['sum_hours_played'];

警告
不要mysql_*在新代码中使用函数。它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文可以帮助您确定哪个。

于 2019-02-26T21:12:33.257 回答
1

你真的很亲近。您只需将每个数组的第三个索引添加在一起:

$sql = "SELECT * FROM table1 WHERE team_id = 1";
$res = mysql_query($sql);

$total = 0;
while($row = mysql_fetch_assoc($res)){
   $total += $row['hours_played'];
}

相反 ,您也可以使用编号索引。

$total = 0;
while($row = mysql_fetch_assoc($res)){
   $total += $row[2]; // indexes start at 0
}

echo $total; // Will print 11 if your arrays you posted are correct.

另外——警告!!您需要使用mysqli而不是更不安全且现已弃用的 mysql

于 2019-02-26T21:08:53.097 回答
1

最重要的
是避免使用mysql_*函数。它们不再被维护并且也被正式弃用。阅读有关使用预准备语句的信息,并将现有代码更改为使用PDOMySQLi

hours_played你可以在while循环中得到总数。尝试这个:

$sql = "SELECT * FROM table1 WHERE team_id = 1";
$res = mysql_query($sql);

$total_hours_played = 0; // initialize a variable to get sum of hours
while($row = mysql_fetch_assoc($res)){
   $total_hours_played += $row['hours_played'];
}
echo $total_hours_played;
于 2019-02-26T21:09:00.053 回答
0
$sum = array_sum(array_column($array, 'hours_played'));
于 2019-02-26T21:08:50.693 回答