38

と の両方を使用result()result_array()ます。

通常、結果を配列として取得するのが好きなので、ほとんどの場合、result_array() を使用します。

しかし、どちらが従うべきより良いアプローチかを知りたいのですが、パフォーマンスに関しては、どちらを使用するのがより効率的ですか?

ここに私がコードイグナイタークエリで話している例があります

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

または、これはより良いアプローチであるべきですか??

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

また、現在、汎用モデルで result_array を使用しています。

4

8 に答える 8

34

$typeResult には、返される結果のタイプを決定するオプションのパラメーターがあります。デフォルト ( $type = "object") では、オブジェクト ( result_object()) を返します。に設定すると"array"、結果の配列が返されます。これは、 caling と同等ですresult_array()。3 番目のバージョンは、結果オブジェクトとして使用するカスタム クラスを受け入れます。

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

配列は技術的に高速ですが、オブジェクトではありません。結果をどこで使用するかによって異なります。ほとんどの場合、配列で十分です。

于 2013-05-12T11:23:03.143 に答える
7

参考までに:

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

result() および result_array() の codeigniter ドキュメント

于 2016-05-16T16:08:47.443 に答える
4

result_array()より速く、 result()より簡単に

于 2013-05-12T11:37:26.750 に答える
1

純粋な配列を返すのは、オブジェクトの配列を返すよりもわずかに高速です。

于 2013-05-12T11:23:02.003 に答える
1

result()result_array()純粋な配列を返すだけで標準クラスオブジェクトを返すという点で再帰的であるためresult_array()、パフォーマンスに関する選択になります。ただし、速度の違いはほとんどありません。

于 2013-05-12T11:24:23.743 に答える
0

result_array()連想配列型のデータを返します。純粋な配列を返すのは、オブジェクトの配列を返すよりもわずかに高速です。純粋な配列を返すだけresult()で標準クラスオブジェクトを返すという点で再帰的であるため、パフォーマンスに関する選択になります。result_array()result_array()

于 2020-12-27T12:43:18.230 に答える