有可能是愚蠢的事情我做错了这里。PHP数组不更新
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-> score都为每行返回正确的东西,但$ results []从来没有添加任何东西。如果我甚至改变它只是像上面的$ results [3] = 0这样愚蠢的东西,然后在for循环中使用$ results [3] ++或+ = 1,它不会将任何内容添加到$ results [3] 。
编辑:问题解决了。的确是一件愚蠢的 - 其confirmed_id是由我的合作伙伴设置为空时,他已重新运行我们的数据库后,我以前所有设置为1。谢谢你们:)
你能只检查不“+”,即。 $ results [$ row-> uid] = $ row-> score; – 2012-03-22 04:31:13
每行的'$ row-> confirmed_id'的值是多少?它真的是真的吗? – cHao 2012-03-22 04:32:31
你有反对大括号或使用聚合SQL函数的东西吗?你的代码可以受益于这两个:) – 2012-03-22 04:33:51