Я использую как 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