2012-04-23 10 views
0

私はcodeigniterのモデルクラスに 'get'関数を書いていますが、返されるデータの一部を処理する必要があり、理想的にはオーバーヘッドがありません。クエリからのデータの処理

function get_answers($p) 
{ 
    $result = $this->db->get_where('answer', array('a_upid_fk' => $p))->result(); 

    // foreach ($result->answer as $ans) { 
    // $result->answers = explode('|', $ans, -1); 
    // } 

    return $result; 
} 

結果は次のようになります。

array (
    0 => 
    stdClass::__set_state(array(
    'aid' => '742', 
    'a_upid_fk' => '231', 
    'answer' => '4555|||', 
    'a_qid_fk' => '70', 
    'created' => '2012-04-20 15:35:38', 
    'last_modified' => '2012-04-20 15:36:11', 
    'revision' => '1', 
)), 
    1 => 
    stdClass::__set_state(array(
    'aid' => '743', 
    'a_upid_fk' => '231', 
    'answer' => NULL, 
    'a_qid_fk' => '71', 
    'created' => '2012-04-20 15:35:38', 
    'last_modified' => '2012-04-20 15:35:38', 
    'revision' => '1', 
)) ... 

問題は解答のパイプで区切られたリストとして保存されている答えですが、私は機能ではなく、爆発配列として返すようにしたいです。私はシンタックスと、上に貼り付けたオブジェクトの配列に配列を作成し、置き換えたり追加したりする方法がわかりません。

コメントアウトしようとしているコードがあります。

理想的には代わりの'answer' => '4555|||', 私は何の問題explodeを使用してアレイを作成していないが、私はオリジナルのCodeIgniterのアクティブレコードの結果を変更するかどうかはわかりません

'answer' => array (
     0 => '4555', 
     1=> '', 
     2=> '') 

を持っていると思います。あなたのサブアレイスルー

答えて

0

ループ:

$answer_array = explode('|', $answer); 
foreach ($aswer_array as $instance) 
{ 
    $result[] = $instance; 
} 

は、使用してそれを呼び出す、__set_state())の定義 - $subarray = $result[0][$object->answer]を。

+0

__set_stateまたは任意の魔方法を使用したことはありません。私はそれを私のものにどのように適用するのかはっきりしない。爆発する配列の数に制限はありません。ループに入る必要はありませんか? – Damon

+0

もちろん、紛らわしいコードを表示したばかりです。これらはすべてループ内にあるべきであり、単なる例です。 –

+0

ああ私は '__set_state'の役割を本当に理解していません。それはコード署名者がやっていることのうち、元の出力bcだけです – Damon

関連する問題