我搜索了最近3天,但我无法找到解决方案。我试图计算一个阵列中一个玩家的最低5点的总分,我已经尝试过array_sum但我无法让它工作,无论我尝试什么它只显示5个最低值数组,但没有将它们加在一起,这是代码。
<?php
if (isset($_POST['calc'])) {
$player = $_SESSION['id'];
$result = $conn->query("SELECT * FROM scores WHERE player_id='$player' ORDER by points ASC");
$row = $result->fetch_array();
$row_count = mysqli_num_rows($result);
if ($row_count>=10) { // checks that at least 10 rows available
$result = $conn->query("SELECT points FROM scores WHERE player_id='$player' ORDER by points ASC LIMIT 5"); // select 5 lowest points
while ($row = mysqli_fetch_array($result)) {
$total = array($row['points']);
$sum = array_sum($total);
echo $sum;
}
答案 0 :(得分:0)
您正在循环中的每次迭代中创建一个新数组。将元素添加到循环中的数组,然后在循环结束后使用array_sum,或者只是将值添加到总和中。
E.g。
$sum = 0;
while ($row = mysqli_fetch_array($result)) {
$sum += $row['points'];
}
echo $sum;
您也可以在SQL查询中使用SUM()函数。这可能更快。
答案 1 :(得分:0)
您可以在查询中进行求和,以节省自己的处理时间,减少在数据库和应用程序之间传输的时间。
基本上这应该做你想要的。我没有对它进行过个人测试,但是它应该以相同的方式运行,而你的逻辑障碍则更少。
$total
你的价值在var c = function(pos) {
var lat = pos.coords.latitude,
long = pos.coords.longitude,
coords = lat + ', ' + long;
document.getElementById('google_map').setAttribute('src', 'https://maps.google.co.uk/?q=' + coords + '&z=60&output=embed');
} // <-- HERE
document.getElementById('get_location').onclick = function() {
navigator.geolocation.getCurrentPosition(c);
return false;
}