更新
使用此代码我可以检索差异,但我只能看到查询的第一个运动员。为什么? 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”表格。 这两个函数被定义为检索运动员的数据并将它们放入阵列中。 第一个检索上周的数据,第二个检索当前数据。
我需要比较两个数组以获得两周值之间的差异。 你看到了可能的解决方案吗?
答案 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)
只是遍历数组并执行比较操作,如果满足您的需要,因为没有直接函数