不能使用stdClass类型的对象作为数组

时间:2015-06-08 08:25:42

标签: php codeigniter

我想显示来自数据库的所有记录。但是当我想显示记录时,浏览器显示错误,错误是: "

  

遇到PHP错误

     

严重性:错误

     

消息:不能使用stdClass类型的对象作为数组

     

文件名:views / show_designation.php

     

行号:53

回溯: "

查看

<?php  print_r($designation); $i=1;foreach($designation as $desig): ?>
                                  <tr>
                                       <td><?php echo $i; ?></td>

                                       <td><?php echo $desig['name']; ?></td>  This is (LINE 53)

                                        <td><a href="<?php echo base_url('index.php/designation/delete_designation/'.$desig[$i]->dkey);?>"><input type="button" value="Delete" class="btn btn-danger"/></a>
                                        <td class="numeric"><a id= "<?php echo $desig[$i]->dkey; ?>"  onclick="edit_designation('<?php echo $designation[$i]->dkey; ?>')" data-target="#myModal" data-toggle="modal" style="color:#ffffff;" href="#myModal"><button class="btn blue" type="button">Edit</button>

                                  </tr>
                        <?php $i++;endforeach;?>

控制器

public function get_designation()
    {
        $this->load->model('designation_model');
        $userlist=$this->designation_model->get_alldesignation_model();
        $data['designation']=$userlist;
        $this->load->view('show_designation',$data);
    }//edit_project

模型

public function get_alldesignation_model()
    {
        $query = $this->db->get('designations');
        $result=$query->result();
        return $result;
    }

3 个答案:

答案 0 :(得分:1)

您正在使用需要对象语法的数组语法。取代

$desig['name']

$desig->name

注意:在引用$desig[$i]的行中,您会遇到同样的问题。我不确定你在那里尝试做什么,但看起来你正在将for循环中的一些语法混合到你的foreach循环中。如果我理解正确,您只需将[$i]放在您使用它的每个地方。

答案 1 :(得分:1)

使用查询结果作为数组说

 $result=$query->result_array();

因为默认情况下结果作为对象

返回

答案 2 :(得分:0)

试试这个

模型

中的

/target
查看

中的

public function get_alldesignation_model()
    {
        $query = $this->db->get('designations');
        $result=$query->result_array();//Store data as Array
        return $result;
    }