codeigniter - 操作CI_DB_mysql_result对象

时间:2013-11-25 13:41:58

标签: php codeigniter

我的$query->results()数组的print_r为我提供了示例:

CI_DB_mysql_result Object
        (
            [conn_id] => Resource id #28
            [result_id] => Resource id #45
            [result_array] => Array
                (
                )

            [result_object] => Array
                (
                    [0] => stdClass Object
                       (
                            [id] => 3
                            [is_tool] => 1
                       )
                    [1] => stdClass Object
                       (
                            [id] => 7
                            [is_tool] => 0
                       )
                    [2] => stdClass Object
                       (
                            [id] => 12
                            [is_tool] => 1
                       )
                    [3] => stdClass Object
                       (
                            [id] => 13
                            [is_tool] => 0
                       )
                 )

             [custom_result_object] => Array
            (
            )

        [current_row] => 0
        [num_rows] => 10
        [row_data] => 
    )

我想通过删除一个或多个stdClass对象并将[num_rows]更新为我剩下的行数来操纵上面的结果,否则就像数据库查询的结果一样离开数组我原来的$query变量。

这可能吗?我怎么能这样做呢?

非常感谢。

1 个答案:

答案 0 :(得分:0)

您可以迭代结果集,确保使用&符号在foreach中通过引用传递:

foreach($records->result() AS &$record) {
   unset($record->x); // Remove a key
   $record->foo = 'Bar'; // Add a key
}

请注意: - 这并不适用于所有版本的PHP 5!

您也可以尝试扩展CI_DB_mysql_result类并返回该实例,只要它与默认实现保持兼容即可。然后,您可以扩充num_rows方法以包含您的自定义代码。