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

时间:2014-11-04 13:44:04

标签: php sql codeigniter

我的模型中有以下函数,它返回一个数据数组。我想在每一行上进行另一个操作,然后将结果添加到数据数组中,然后返回它。

 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'时出错。我该如何解决?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

如果要将“体验”键添加到结果中,则无法将其直接添加到数据中。

你得到一个数组,其中包含键0,1,2,3,4 ......'经验'作为最后一个键 - 每次都被覆盖。

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

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

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