如何使用php查找数组中两个特定键的平均值,而不平均整个数组


How do I use php to find an average of two specific keys within an array without averaging the entire array

我是php, sql等的新手,我试图创建一个简单的成员系统来获取分数和平均特定对,但我没有得到正确的结果。

控制器:

        <?php 
    $records = array();
    $avg = array();
    if($results = $conn->query("SELECT * FROM table")) {
        if($results->num_rows) {
            while($row = $results->fetch_object()) {
                $records[] = $row; //Appending value to array
                $avg[] = $row;
            }
            $avg['charAvgScore'] = ($avg['charPreviousScore'] + $avg['charCurrentScore']/2);
            $results->free();
    }
    }
?>

print_r (avg)结果

(
    [0] => stdClass Object
        (
            [memberID] => 5
            [charName] => Someguy
            [charClass] => Cabalist
            [charLevel] => 53
            [charPreviousScore] => 4
            [charCurrentScore] => 4
            [charAvgScore] => 0
        )
    [1] => stdClass Object
        (
            [memberID] => 6
            [charName] => Otherguy
            [charClass] => Abolisher
            [charLevel] => 53
            [charPreviousScore] => 8
            [charCurrentScore] => 8
            [charAvgScore] => 0
        )
    [charAvgScore] => 0
)

charPreviousScore返回一个"未定义索引",$avg的值为0

您可以在SQL查询中使用:

<?php 
    $records = array();
    $avg = array();
    if($results = $conn->query("SELECT *, ((charPreviousScore + charCurrentScore) / 2) AS charAvgScore FROM table")) {
        if($results->num_rows) {
            while($row = $results->fetch_object()) {
                $records[] = $row; //Appending value to array
            }
            $results->free();
        }
    }
?>

结果应该是:

(
    [0] => stdClass Object
        (
            [memberID] => 5
            [charName] => Someguy
            [charClass] => Cabalist
            [charLevel] => 53
            [charPreviousScore] => 4
            [charCurrentScore] => 4
            [charAvgScore] => 4
        )
    [1] => stdClass Object
        (
            [memberID] => 6
            [charName] => Otherguy
            [charClass] => Abolisher
            [charLevel] => 53
            [charPreviousScore] => 8
            [charCurrentScore] => 8
            [charAvgScore] => 8
        )
)

你应该在你的结果循环中进行计算。

int i = 0;
while($row = $results->fetch_object()) {
   $records[] = $row;
   $avg[] = $row;
   $avg[i]['charAvgScore'] = ($row['charPreviousScore'] + $row['charCurrentScore']/2)
   i++;
}