2013-05-12 13 views
25

Używam zarówno result() i result_array().kodigniter, result() vs. result_array()

Zazwyczaj lubię dostać mój wynik jak tablica to dlaczego używam result_array() głównie ..

Ale chcę wiedzieć, co jest lepszym rozwiązaniem, że powinien podążać, Który z nich jest bardziej wydajny używać w odniesieniu do wydajności?

Oto przykład mówię w CodeIgniter odpytuje

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

czy to powinno być lepsze podejście ??

również teraz używam score_array w moim generic modelu.

Odpowiedz

26

Wynik ma opcjonalny parametr $type, który decyduje o typie zwracanego wyniku. Domyślnie ($type = "object") zwraca obiekt (result_object()). Może być ustawiony na "array", a następnie zwróci tablicę wyników, która jest równoważna z Calingiem result_array(). Trzecia wersja przyjmuje klasę niestandardową do użycia jako obiekt wyniku.

Kod z 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); 
    } 
} 

Tablice są technicznie szybciej, ale one nie są obiektami. To zależy od tego, gdzie chcesz wykorzystać wynik. W większości przypadków wystarczają tablice.

1

Zwracanie czystej tablicy jest nieco szybsze niż zwracanie tablicy obiektów.

1

result() jest rekurencyjne tym, że zwraca obiekt klasy std gdzie jako result_array() prostu zwraca czystą tablicę, więc result_array() byłby wybór odnośnie do wydajności. Jednak różnica prędkości jest bardzo niewielka.

3

result_array() jest szybsza, result() łatwiej

5

ze względu na odniesienie:

// $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 for result(), and result_array()

0

w moim przeżyciem problem używając result() i result_array() w moim JSON przypadku korzystania result() tam nie ma problemu z jego działaniami, ale jeśli używasz result_array(), mam błąd "Trying to get property of non-object" tak im nie szukaj w głęboki problem, więc po prostu za pomocą result() przypadku korzystania JSON i korzystania result_array() jeśli nie używając JSON

1

wynik() zwraca obiekt danych typu. . . . result_array() zwraca dane typu Asocjatywna tablica.

Powiązane problemy