1

アップデート

このコードで違いを取得できますが、クエリの最初のアスリートしか表示されません。なんで?while は x 回 (x は結果の数) ループするべきではありませんか?

function difference() {

global $db;

$result = $db->query("
        SELECT *
        FROM maxithlon
        WHERE owner = '". $_SESSION[teamid] ."'
        AND season = '". $this->season ."'
        AND week = '". $this->currentWeek ."'
        ORDER BY RAND();
");

while ($row = $result->fetch_assoc()) {

$result2 = $db->query("
        SELECT *
        FROM maxithlon
        WHERE owner = '". $_SESSION[teamid] ."'
        AND season = '". $this->season ."'
        AND week = '". $this->currentWeek ."-1'
        AND athleteId = '". $row[athleteId] ."'
");

while ($row2 = $result2->fetch_assoc()) {


    $difference[$row2[athleteId]][form] = $row[form] - $row2[form];
    $difference[$row2[athleteId]][maxid] = $row[maxid] - $row2[maxid];
    $difference[experience] = $row[experience] - $row2[experience];
    $difference[mood] = $row[mood] - $row2[mood];
    $difference[strenght] = $row[strenght] - $row2[strenght];
    $difference[stamina] = $row[stamina] - $row2[stamina];
    $difference[speed] = $row[speed] - $row2[speed];    
    $difference[agility] = $row[agility] - $row2[agility];  
    $difference[jump] = $row[jump] - $row2[jump];
    $difference[throws] = $row[throws] - $row2[throws];
    $difference[specialty1] = $row[specialty1] - $row2[specialty1];
    $difference[specialty2] = $row[specialty2] - $row2[specialty2];
    $difference[height] = $row[height] - $row2[height];
    $difference[weight] = $row[weight] - $row2[weight];
    $difference[fans] = $row[fans] - $row2[fans];
    $difference[wage] = $row[wage] - $row2[wage];

return($difference);
    }
    }

}

自分のニーズを満たす答えを探しましたが、見つかりませんでした。

アスリートのデータを含む「maxithlon」テーブルを含むデータベースがあります。2 つの関数は、アスリートのデータを取得し、それらを配列に入れるために定義されています。1 つ目は先週のデータを取得し、2 つ目は現在のデータを取得します。

2 つの配列を比較して、2 週間の値の差を取得する必要があります。考えられる解決策はありますか?

4

3 に答える 3

2

できることは、値の違いを見つけたいすべてのキーの配列を作成することです。

$criteria = array('stamina', 'speed', 'agility', /*...*/);
$differences = array();
foreach($criteria as $key)
{
    $differences[$key] = $current[$key] - $last[$key];
}

$current と $last は、特定のアスリートの現在お​​よび前の週の結果に関するデータを含む配列であると仮定しています (したがって、コメントに投稿した配列の 2 番目のレベル)。

于 2012-12-11T15:17:14.407 に答える
0

を使用できますarray_diff()。これがマニュアルです

于 2012-12-11T14:36:43.170 に答える
0

直接関数がないため、必要に応じて配列をループして比較操作を実行するだけです

于 2012-12-11T14:45:42.933 に答える