Подтвердить что ты не робот

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 в моей общей модели.

4b9b3361

Ответ 1

Результат имеет необязательный параметр $type, который решает, какой тип результата будет возвращен. По умолчанию ($type = "object") он возвращает объект (result_object()). Его можно установить в "array", после чего он вернет массив результатов, эквивалентный календарю 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);
    }
}

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

Ответ 2

для ссылки:

// $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()

Ответ 3

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

Ответ 4

result() возвращает данные типа объекта. , , , result_array() возвращает данные типа ассоциативного массива.

Ответ 5

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

Ответ 6

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

Ответ 7

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