从循环中调用的模型中获取数据

时间:2013-03-04 10:23:08

标签: php codeigniter

我在CodeIgniter中有一个控制器函数,如下所示:

$perm = $this->job_m->getIdByGroup();
foreach($perm as $pe=>$p)
{
    $pId  =  $p['id'];
    $result = $this->job_m->getDatapermission($pId);
}

$data['permission'] = $result;

我需要做的是在视图中列出结果中的数据,但是在使用此方法时我只得到最后一个值。如何将所有结果传递给视图?

3 个答案:

答案 0 :(得分:1)

将其存储在数组中。像这样:

foreach($perm as $pe=>$p){
   $result[] = $this->job_m->getDatapermission($p['id']);
}

答案 1 :(得分:0)

因为$ result不是数组...

试试这个:

$result=array();
foreach($perm as $pe=>$p)
{
    $pId  =  $p['id'];
    $result[] = $this->job_m->getDatapermission($pId);
}

$data['permission'] = $result;

答案 2 :(得分:0)

注意:

我的回答使用counter来在需要时显示单个组结果。

猜测你需要循环并显示$ result的值,可能是$ query-> result()返回的数组或对象。事情可能有点复杂。

示例:如果$ perm是一个包含5个项目(或组)的数组,则计数器会分配键1 - 5而不是0 - 4,因为[]可能会产生误导。使用第一个视图示例,您可以选择显示单个组值,如果您想通过url段传递它。使代码更灵活,可重用。例如。你想只显示第2组的返回,在我的例子中,$ result [2]会做下一个代码运行的其他操作。请参阅我在代码中的评论。

$perm = $this->job_m->getIdByGroup();
$counter = 1; 
foreach($perm as $pe=>$p)
{
    $pId  =  $p['id'];
    $result[$counter] = $this->job_m->getDatapermission($pId);
$counter++;
}

$data['permission'] = $result;

如上所述注:

我添加了一个计数器或密钥,因此您可以定位特定级别。如果这些组是: 男人,女人,男孩,女孩,儿童;你知道女性是第二组(2)如果你想显示该组的价值,你不需要重写下面的代码。只需传递组密钥就像按顺序告诉它一样简单。要无限制地显示所有循环,请使用第二个视图示例。要同时使用它们,请使用if语句。

###To access it you could target a specific level like 

if(isset($permission)){
    foreach($permission[2] as $key => $value){
        echo $value->columnname;
    }


###To get all results:

    foreach($permission as $array){
        foreach($array as $key => $value){
            echo $value->columnname;
        }
    }
}