我正试着抓住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()'?我的结果是作为对象而不是数组返回的吗?
答案 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);
}