如何在Codeigniter中通过多维数组?

时间:2012-08-22 00:54:53

标签: php codeigniter multidimensional-array

我正试着抓住Codeigniter中我需要的所有变量,然后将这些值传递给视图。

我理解这个概念,但是在迭代数组并在其每个键上添加另一个数组时会陷入困境。

$ data ['items']数组包含通过get_all()函数从模型传递的数据。查询基本上是“从项目中选择*”。

每个项目都有多个功能和图片。为了得到合适的值,我需要一个项目的id。我可以从第一个数组($ data ['items'])获取它,然后我可以传递给模型函数。

尝试通过以下代码执行此操作时,我会遇到各种错误。我已经尝试在foreach循环之前定义特征和图片数组 - 仍然会出错。

我确定我的语法错了。欢迎任何帮助。

$data['items'] = $this->amazon->get_all();
foreach ($data['items'] as $data )
    $id = $data->id;
    $data['features'] = $this->amazon->get_features($id);
    $data['pictures'] = $this->amazon->get_pictures($id);
}

修改

根据反馈,我已将代码更新为此代码(代码的第24 - 30行):

    $items = $this->amazon->get_all();
    for($i=0; $i<count($items);$i++) {
        $data = $items[$i];
        $id = $data->id;
        $items[$i]['features'] = $this->amazon->get_features($id);
        $items[$i]['pictures'] = $this->amazon->get_pictures($id);
    } 

PHP抱怨这个: PHP致命错误:不能在第28行的/var/www/ci/application/controllers/main.php中使用stdClass类型的对象作为数组

以下是亚马逊模型的功能:

function get_all() 
{
    $query = $this->db->get('items');
    return $query->result();
}

function get_pictures($id) {
    $query = $this->db->query("SELECT link FROM pictures WHERE item_id='$id' AND type IN('thumb_set')");
    $style = "border-style:solid; border-width:1px";
    $class = "modal-thumb";
    $results = '';
    foreach ($query->result() as $row) {
        $results .= "<li style='$style' class='$class'><img src='$row->link' alt=''/></li>";
    }
    return $results;
}

function get_features($id) {
    $query = $this->db->query("SELECT content FROM features WHERE item_id='$id' ORDER BY feature_num DESC");
    $results = '';
    foreach ($query->result() as $row) {
        $results .= "<li>";
        $results .= $row->content;
        $results .= "</li>";
    }
    return $results;
}

我想我需要使用'results_array()'而不是'results()'?我的结果是作为对象而不是数组返回的吗?


1 个答案:

答案 0 :(得分:0)

正如您所说,foreach语句中存在语法错误,您正在重新定义$ data数组。

foreach ($data['items'] as $data )

试试这个:

$items = $this->amazon->get_all();
for($i=0; $i<count($items);$i++){
    $data = $items[$i];
    $id = $data->id;
    $items[$i]['features'] = $this->amazon->get_features($id);
    $items[$i]['pictures'] = $this->amazon->get_pictures($id);
}
相关问题