如何通过Codeigniter中的多维数组


How to through multidimensional array in Codeigniter?

我正试图在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致命错误:无法将stdClass类型的对象用作第28行/var/www/ci/application/controllers/main.PHP中的数组

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

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()"?我的结果是否像现在这样以对象而不是数组的形式返回?


正如您所说,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);
}