0

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


4

1 回答 1

0

As you said, you have syntax error in the foreach statement, you are redefining the $data array.

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

Try this:

$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);
}
于 2012-08-22T01:04:10.157 回答