codeigniter, result () vs. result_array ()

Я использую как result() и result_array() .

Обычно мне нравится получать мой результат в виде массива, поэтому я чаще всего использую result_array ().

Но я хочу знать, какой из них лучше всего подходит, какой из них более эффективен в отношении производительности?

Вот пример, о котором я говорю в запросах codeigniter

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

или это должен быть лучший подход?

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

также прямо сейчас я использую result_array в моей общей модели.

Результат имеет необязательный параметр $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); } } 

Массивы технически быстрее, но они не являются объектами. Это зависит от того, где вы хотите использовать результат. В большинстве случаев достаточно массивов.

для ссылки:

 // $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 , ... ) ... ) 

codeigniter docs для result () и result_array ()

result_array() быстрее, result() проще

Возвращение чистого массива немного быстрее, чем возврат массива объектов.

result() рекурсивно в том, что он возвращает объект std-класса, где в качестве результата result_array() просто возвращает чистый массив, поэтому result_array() будет выбирать в отношении производительности. Тем не менее, очень мало различий в скорости.

в моем эксперименте проблема с использованием result() и result_array() в моем JSON если вы используете result() там проблема не работает, но если вы используете result_array() я получил ошибку "Trying to get property of non-object" поэтому im не поиск в глубоко, поэтому я просто использую result() если вы используете JSON и используете result_array() если не используете JSON