38

我同时使用result()result_array()

通常我喜欢将我的结果作为数组得到,这就是我主要使用 result_array() 的原因..

但我想知道我应该遵循哪种更好的方法,其中哪一种在性能方面更有效?

这是我在 codeigniter 查询中谈论的示例

$query = $this->db->get();
$result = $query->result_array();

还是这应该是更好的方法?

$query = $this->db->get();
$result = $query->result();

现在我也在我的通用模型中使用 result_array 。

4

8 回答 8

34

结果有一个可选$type参数,它决定返回什么类型的结果。默认情况下 ( $type = "object"),它返回一个对象 ( result_object())。它可以设置为"array",然后它将返回一个结果数组,相当于 caling result_array()。第三个版本接受一个自定义类作为结果对象。

来自 CodeIgniter 的代码:

/**
* Query result. Acts as a wrapper function for the following functions.
*
* @param string $type 'object', 'array' or a custom class name
* @return array
*/
public function result($type = 'object')
{
    if ($type === 'array')
    {
        return $this->result_array();
    }
    elseif ($type === 'object')
    {
        return $this->result_object();
    }
    else
    {
        return $this->custom_result_object($type);
    }
}

数组在技术上更快,但它们不是对象。这取决于你想在哪里使用结果。大多数时候,数组就足够了。

于 2013-05-12T11:23:03.143 回答
7

为了参考:

// $query->result_object() === $query->result()
// returns:
Array ( [0] => stdClass Object ( [col_A] => val_1A , [col_B] => val_1B , ... ) 
        [0] => stdClass Object ( [col_A] => val_2A , [col_B] => val_2B , ... ) 
        ...  
      ) 

// $query->result_array() !== $query->result()
// returns:
Array ( [0] => Array ( [col_A] => val_1A , [col_B] => val_1B , ... ) 
        [1] => Array ( [col_A] => val_2A , [col_B] => val_2B , ... )
        ... 
      ) 

result() 和 result_array() 的 codeigniter 文档

于 2016-05-16T16:08:47.443 回答
4

result_array()更快, result()更容易

于 2013-05-12T11:37:26.750 回答
3

result() 返回对象类型数据。. . . result_array() 返回关联数组类型数据。

于 2018-02-16T06:29:12.687 回答
1

返回纯数组比返回对象数组稍快。

于 2013-05-12T11:23:02.003 回答
1

result()是递归的,因为它返回一个 std 类对象,而它result_array()只是返回一个纯数组,所以result_array()关于性能的选择也是如此。不过速度差别很小。

于 2013-05-12T11:24:23.743 回答
0

result_array()返回关联数组类型数据。返回纯数组比返回对象数组稍快。result()是递归的,因为它返回一个 std 类对象,而它result_array()只是返回一个纯数组,所以result_array()关于性能的选择也是如此。

于 2020-12-27T12:43:18.230 回答
-1

在我的使用经验中result(),如果使用没有问题,它的工作原理,但如果使用我得到错误所以我没有深入研究问题所以我只使用如果使用和使用如果不使用result_array()JSONresult()result_array()"Trying to get property of non-object"result()JSONresult_array()JSON

于 2017-01-04T05:56:16.983 回答