it-swarm.com.de

Codeigner, result () vs. result_array ()

Ich benutze sowohl result() als auch result_array().

Normalerweise möchte ich mein Ergebnis als Array erhalten, deshalb verwende ich meistens result_array ().

Aber ich möchte wissen, welcher Ansatz der bessere ist, dem ich folgen sollte. Welcher von ihnen ist in Bezug auf die Leistung effizienter?

Hier ist das Beispiel, über das ich in Codeigniter-Abfragen spreche

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

oder soll das der bessere ansatz sein ???

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

auch im Moment verwende ich result_array in meinem generischen Modell.

35
Sizzling Code

Result hat einen optionalen $type - Parameter, der entscheidet, welche Art von Ergebnis zurückgegeben wird. Standardmäßig ($type = "object") Gibt es ein Objekt zurück (result_object()). Es kann auf "array" Gesetzt werden, dann wird ein Array von Ergebnissen zurückgegeben, das dem Aufruf von result_array() entspricht. Die dritte Version akzeptiert eine benutzerdefinierte Klasse, die als Ergebnisobjekt verwendet werden soll.

Der Code von 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);
    }
}

Arrays sind technisch schneller, aber keine Objekte. Es kommt darauf an, wo Sie das Ergebnis verwenden möchten. In den meisten Fällen sind Arrays ausreichend.

32
Whisperity

zum Zwecke der Bezugnahme:

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

Codeigner docs für result () und result_array ()

6
dsdsdsdsd

result_array() ist schneller, result() ist einfacher

4
Emre Akay

result () gibt Objekttypdaten zurück. . . . result_array () gibt assoziative Array-Typdaten zurück.

2
Harat

Die Rückgabe eines reinen Arrays ist etwas schneller als die Rückgabe eines Arrays von Objekten.

1
Daniel Kmak

result() ist insofern rekursiv, als es ein Standardklassenobjekt zurückgibt, wobei result_array() nur ein reines Array zurückgibt, sodass result_array() hinsichtlich der Leistung die Wahl wäre. Es gibt jedoch nur sehr geringe Geschwindigkeitsunterschiede.

1
Dan

in meinem experince das Problem, das result() und result_array() in meinem JSON verwendet, wenn result() verwendet, gibt es kein Problem seine Arbeiten aber wenn result_array() Ich habe den Fehler "Trying to get property of non-object", also suche ich nicht in die Tiefe des Problems, also benutze ich nur result(), wenn JSON und result_array(), wenn nicht mit JSON

0