我的模型中有以下函数,它返回一个数据数组。我想在每一行上进行另一个操作,然后将结果添加到数据数组中,然后返回它。
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'
时出错。我该如何解决?
答案 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);
}
如果两者都只使用[],则每次迭代都会为每个键分配不同的键。