Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数组未更新_Php_Arrays - Fatal编程技术网

PHP数组未更新

PHP数组未更新,php,arrays,Php,Arrays,我可能有什么愚蠢的地方做错了 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) {

我可能有什么愚蠢的地方做错了

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]添加任何内容


编辑:问题解决了。确实有些愚蠢——我的搭档在我之前将其全部设置为1后重新运行我们的数据库时,确认了_id被设置为null。谢谢大家:)

在$results[某物]存在之前,您正在添加它。您需要在第一种情况下创建它,然后仅在它存在时增加它。

您需要从代码中删除“+=”操作。看看这个

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; 

因此,它不会向行中添加值

你能在没有“+”的情况下进行检查吗,即$results[$row->uid]=$row->score;每行的
$row->confirmed\u id
值是多少?这是真的吗?你反对大括号或使用聚合SQL函数吗?您的代码可以从这两个方面受益:)叹气。令人尴尬的出于某种原因,我的编码伙伴在我们的数据库中将它们都设置为NULL。在我把它们都设置为1之后。这是一个多么愚蠢的问题。至少这是一个问题。这不是——我在顶部添加了$results[3]=0,它以前没有解决它。[3] 这是我的测试用例,所有当前的UID都是。我想你误解了。最初$results[anyid]未定义。它不存在。因此,当您执行$results[anyid]+=3时,您执行的是$results[anyid]=undefined+3。这并不能满足您的需要。对——这就是为什么我在代码顶部说我将$result[3]设置为0,因为我知道我当前所有的id都是3。因此它将执行$result[3]=0+x。谢谢你,但是事实是你发布的代码有一个明显的缺陷。既然你一直坚持这不是错的,我就在你修正之前否决这个问题。