我正试图在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);
}