web-dev-qa-db-fra.com

codeigniter, result () vs result_array ()

J'utilise à la fois result() et result_array().

Habituellement, j'aime bien obtenir mon résultat sous forme de tableau, c'est pourquoi j'utilise principalement result_array () ..

Mais je veux savoir quelle est la meilleure approche que je devrais suivre. Lequel d'entre eux est le plus efficace à utiliser en matière de performance?

Voici l'exemple dont je parle dans les requêtes codeigniter

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

ou est-ce que cela devrait être la meilleure approche?

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

de plus, j'utilise aussi result_array dans mon modèle générique.

35
Sizzling Code

Le résultat a un paramètre facultatif $type Qui décide quel type de résultat est renvoyé. Par défaut ($type = "object"), Il retourne un objet (result_object()). Il peut être réglé sur "array", Puis il retournera un tableau de résultats équivalent à caling result_array(). La troisième version accepte une classe personnalisée à utiliser comme objet de résultat.

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

Les tableaux sont techniquement plus rapides, mais ce ne sont pas des objets. Cela dépend où vous voulez utiliser le résultat. La plupart du temps, les tableaux sont suffisants.

32
Whisperity

à titre de référence:

// $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 pour result (), et result_array ()

6
dsdsdsdsd

result_array() est plus rapide, result() est plus facile

4
Emre Akay

result () renvoie les données de type d'objet. . . . result_array () renvoie les données de type tableau associatif.

2
Harat

Le retour d'un tableau pur est légèrement plus rapide que le retour d'un tableau d'objets.

1
Daniel Kmak

result() est récursif en ce sens qu'il renvoie un objet de classe std où, comme result_array(), un tableau pur suffit, de sorte que result_array() serait un choix en termes de performances. Il y a très peu de différence de vitesse cependant.

1
Dan

dans mon expérience du problème en utilisant result() et result_array() dans mon JSON si en utilisant result() il n'y a pas de problème son fonctionne mais en utilisant result_array() _ j’ai eu une erreur "Trying to get property of non-object" donc je ne cherche pas au fond du problème, donc j’utilise juste result() si j’utilise JSON et j’utilise result_array() sinon en utilisant JSON

0
Wahyu Artadianto