phpperformancecodeigniterresultset

Performance comparison: CodeIgniter's result() vs. result_array()


I use both result() and result_array().

Usually I like to get my result as array that's why I use result_array() mostly.

But I want to know which is the faster approach that I should follow. Which one of them is more efficient to use in regards to performance?

Here is the example I am talking about in CodeIgniter queries:

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

or is this should be the better approach?

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

Also, right now, I am using result_array() in my generic model.


Solution

  • Result has an optional $type parameter which decides what type of result is returned. By default ($type = "object"), it returns an object (result_object()). It can be set to "array", then it will return an array of result, that being equivalent of caling result_array(). The third version accepts a custom class to use as a result object.

    The code from 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);
        }
    }
    

    Arrays are technically faster, but they are not objects. It depends where do you want to use the result. Most of the time, arrays are sufficient.