致命错误:不能使用stdClass类型的对象作为数组

时间:2011-03-23 23:24:57

标签: php mysql codeigniter

我收到了错误:

  

“致命错误:不能在第183行使用stdClass类型的对象作为数组

从这段代码:

$getvidids = $ci->db->query(
    "SELECT * FROM videogroupids " . 
    "WHERE videogroupid='$videogroup' AND used='0' LIMIT 10");

foreach ($getvidids->result() as $row){
    $vidid = $row['videoid'];              //This is line 183
}

有人知道上面的代码有什么问题吗?或者这个错误意味着什么?

4 个答案:

答案 0 :(得分:63)

CodeIgniter将结果行作为对象返回,而不是数组。来自user guide

  

结果()

     
     

此函数在失败时将查询结果作为对象空数组的数组返回。

您必须使用以下表示法访问字段:

foreach ($getvidids->result() as $row) {
    $vidid = $row->videoid;
}

答案 1 :(得分:15)

如果你真的想要一个数组,你可以使用:

$getvidids->result_array()

将返回与关联数组相同的信息。

答案 2 :(得分:0)

控制器(例如:User.php)

<?php
defined('BASEPATH') or exit('No direct script access allowed');

class Users extends CI_controller
{

    // Table
    protected  $table = 'users';

    function index()
    {
        $data['users'] = $this->model->ra_object($this->table);
        $this->load->view('users_list', $data);
    }
}

查看(例如:users_list.php)

<table>
    <thead>
        <tr>
            <th>Name</th>
            <th>Surname</th>
        </tr>
    </thead>

    <tbody>
        <?php foreach($users as $user) : ?>
            <tr>
            <td><?php echo $user->name; ?></td>
            <td><?php echo $user->surname; ?></th>
        </tr>
        <?php endforeach; ?>
    </tbody>
</table>
<!-- // User table -->

答案 3 :(得分:-3)

抱歉。虽然有点晚了但希望它也能帮助别人。 始终使用stdClass object.e.g

 $getvidids = $ci->db->query("SELECT * FROM videogroupids WHERE videogroupid='$videogroup'   AND used='0' LIMIT 10");

foreach($getvidids->result() as $key=>$myids)
{

  $vidid[$key] = $myids->videoid;  // better methodology to retrieve and store multiple records in arrays in loop
 }