在数组查询结果上添加数据


add data on a array query result

我的模型中有下面的函数,它返回一个数据数组。我想对每一行进行另一次操作,并在返回结果之前将结果添加到数据数组中

 function get_all_annonce()
    {
        $this->db->select(" * from annonce");
        $this->db->order_by("annonce.DATEDEBUTANNONCE","asc");
        $q=$this->db->get();
        if($q->num_rows()>0)
        {
            foreach($q->result() as $row)
            {
                $data[]=$row;
                //I try to add another result
                $experience=$this->get_experience($row->NUMUSER); 
                $data['experience']=$experience;
            }
            return $data;
        }
    }

但是,当我尝试访问视图中的$experience$row->'experience'时,出现了一个错误。我该怎么修?

$data变量定义在错误的范围内。您在foreach循环中定义了它,但之后尝试返回它。尝试在foreach上方添加$data = Array();

除了上面的答案。首先,你有不必要的作业,你可以在一行中完成。第二个-当您使用[]时,它将自动创建索引,并且该行将作为数组添加到该索引中。您得到一个多维数组(0=>结果1,1=>结果2等)。

如果要将"experience"键添加到结果中,则不能将其直接添加到数据中。

你得到一个数组,它将有键0,1,2,3,4…'经验'作为最后一个键-每次它都被覆盖。

一种方法是使用一个变量作为关键字(或者使用循环):

        $i = 0;
        foreach($q->result() as $row)
        {
            $data[$i]=$row;
            $data[$i]['experience'] = $this->get_experience($row->NUMUSER); 
        }

如果两者都只使用[],那么每次迭代都会为每个键分配不同的键。