2015-10-12 21 views
1

我是php,sql等的新手,試圖創建一個簡單的成員系統來獲取分數和平均特定對,但我沒有得到正確的結果。我如何使用php來查找陣列中的兩個特定鍵的平均值,而無需對整個陣列進行平均處理

控制器:

 <?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($平均)結果

(
    [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將返回一個 「未定義指數」 和$平均的值是0

回答

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 
     ) 
) 
+0

謝謝!這正是我所希望的,也是我嘗試的第一件事情之一,但我無法理解如何使其發揮作用。完美的作品。 – Mikesconfused

0

自己應該做的您的結果循環內的計算。

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