数组值之间的差异

时间:2012-12-11 14:06:08

标签: php arrays multidimensional-array

更新

使用此代码我可以检索差异,但我只能看到查询的第一个运动员。为什么? 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”表格。 这两个函数被定义为检索运动员的数据并将它们放入阵列中。 第一个检索上周的数据,第二个检索当前数据。

我需要比较两个数组以获得两周值之间的差异。 你看到了可能的解决方案吗?

3 个答案:

答案 0 :(得分:2)

你可以做的是创建一个想要找到值之间差异的所有键的数组。

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

假设$ current和$ last是包含给定运动员当前和前一周结果的数据的数组(所以你在评论中发布的数组的第二级)。

答案 1 :(得分:0)

您可以使用array_diff()。这是manual

答案 2 :(得分:0)

只是遍历数组并执行比较操作,如果满足您的需要,因为没有直接函数