Pregunta codeigniter, result () vs. result_array ()


Yo uso ambos result() y result_array().

Por lo general, me gusta obtener mi resultado como matriz por eso uso result_array () en su mayoría ..

Pero quiero saber cuál es el mejor enfoque que debería seguir, ¿Cuál de ellos es más eficiente de usar en lo que respecta al rendimiento?

Este es el Ejemplo del que estoy hablando en las consultas codeigniter

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

o es este debería ser el mejor enfoque?

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

también ahora estoy usando result_array en mi modelo genérico.


32
2018-05-12 11:17


origen


Respuestas:


El resultado tiene un opcional $type parámetro que decide qué tipo de resultado se devuelve. Por defecto ($type = "object"), devuelve un objeto (result_object()) Se puede configurar para "array", entonces devolverá una matriz de resultados, que es equivalente a caling result_array(). La tercera versión acepta una clase personalizada para usar como un objeto de resultado.

El código de 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);
    }
}

Las matrices son técnicamente más rápidas, pero no son objetos. Depende de dónde quiera usar el resultado. La mayoría de las veces, las matrices son suficientes.


29
2018-05-12 11:23



por el bien de la referencia:

// $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 para result () y result_array ()


6
2018-05-16 16:08



result_array() es más rápido, result() es mas facil


3
2018-05-12 11:37



result () devuelve datos de tipo de objeto. . . . result_array () devuelve datos de tipo Array Asociativo.


2
2018-02-16 06:29



La devolución de la matriz pura es ligeramente más rápida que la devolución de una matriz de objetos.


1
2018-05-12 11:23



result() es recursivo porque devuelve un objeto de clase estándar donde result_array() simplemente devuelve una matriz pura, por lo result_array() Sería una elección con respecto al rendimiento. Sin embargo, hay muy poca diferencia en la velocidad.


1
2018-05-12 11:24



en mi experiencia el problema usando result() y result_array() en mi JSON si usas result() no hay problema, funciona, pero si se utiliza result_array() Tengo un error "Trying to get property of non-object" así que no busco en profundidad el problema así que solo uso result() si usas JSON y usando result_array() si no se usa JSON 


0
2018-01-04 05:56