我可能在这里做错了。
public function get_scores($id)
{
$results = array();
$sql = "SELECT * FROM scores WHERE comp_id = $id";
$rows = $this->db->query($sql)->result();
foreach($rows as $row) {
if($row->confirmed_id) {
$results[$row->uid] += $row->score;
}
}
sort($results);
return $results;
}
所以基本上我要做的是在数据库中添加所有用户分数并按排名顺序返回。确认 - > id只是一个检查,以确保分数已被确认(因此可以添加到他们的总分)。我基本上只是尝试创建一个关联数组,其中键是用户ID,并且添加了他们在数据库中的每个问题的分数。查询工作正常,$ row-uid和$ row->得分都返回每行的正确值,但$ results []从未添加任何内容。如果我甚至把它改成傻逼的东西,比如$ results = 3在顶部,然后$结果[3] ++或+ = 1在for循环中,它不会向$ results添加任何东西[3]
编辑:问题解决了。确实有些愚蠢 - 在我之前将它全部设置为1之后,我的伙伴重新设置了我的伙伴,确认_id被设置为null。谢谢你们:)答案 0 :(得分:2)
您在$ results [something]存在之前添加它们。您需要在第一种情况下创建它,然后只有在它存在时才增加它。
答案 1 :(得分:0)
您需要从代码中删除“+ =”操作。检查一下。
public function get_scores($id)
{
$results = array();
$sql = "SELECT * FROM scores WHERE comp_id = $id";
$rows = $this->db->query($sql)->result();
foreach($rows as $row)
if($row->confirmed_id)
$results[$row->uid] = $row->score;
sort($results);
return $results;
}
您之前的操作类似于
$results[$row->uid] = $results[$row->uid] + $row->score;
因此它不会为您的行添加值。