2013-05-12 7 views
25

मैं result() और result_array() दोनों का उपयोग करता हूं।कोडनिर्देशक, परिणाम() बनाम परिणाम_एरे()

आमतौर पर मैं सरणी thats के रूप में मैं क्यों result_array() का उपयोग अपने परिणाम प्राप्त करना चाहते ज्यादातर ..

लेकिन मुझे पता है कि कौन सा बेहतर दृष्टिकोण है कि मैं का पालन करना चाहिए, कौन उनमें से एक अधिक कुशल है चाहता हूँ प्रदर्शन के संबंध में उपयोग करने के लिए?

यहाँ है उदाहरण मैं CodeIgniter में बात कर रहा हूँ प्रश्नों

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

या इस बेहतर दृष्टिकोण होना चाहिए ??

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

अभी भी मैं अपने जेनेरिक मॉडल में परिणाम_एरे का उपयोग कर रहा हूं।

उत्तर

26

परिणाम एक वैकल्पिक $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); 
    } 
} 

सरणी तकनीकी रूप से तेजी से कर रहे हैं, लेकिन वे ऑब्जेक्ट नहीं है। यह निर्भर करता है कि आप परिणाम का उपयोग कहां करना चाहते हैं। अधिकांश समय, सरणी पर्याप्त हैं।

1

लौटने वाली शुद्ध सरणी वस्तुओं की एक सरणी लौटने से थोड़ा तेज है।

1

result() रिकर्सिव है कि यह एक std क्लास ऑब्जेक्ट देता है जहां result_array() बस एक शुद्ध सरणी देता है, इसलिए result_array() प्रदर्शन के संबंध में विकल्प होगा। हालांकि गति में बहुत कम अंतर है।

3

result_array(), तेजी से होता है result() आसान

5

संदर्भ के लिए है:

// $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
मेरी experince में

समस्या मेरी JSON यदि का उपयोग कर result() वहाँ में result() और result_array() का उपयोग कर कोई समस्या नहीं है लेकिन अगर result_array() का उपयोग कर रहा है तो मुझे त्रुटि मिली "Trying to get property of non-object" इतना im तो मैं सिर्फ result() अगर JSON का उपयोग करने और result_array() का उपयोग कर यदि का उपयोग नहीं कर JSON

1

परिणाम() रिटर्न प्रकार डेटा वस्तु का उपयोग कर गहरी समस्या में नहीं खोज। । । । result_array() एसोसिएटिव ऐरे प्रकार डेटा देता है।

संबंधित मुद्दे