1

コードイグナイターのデータベースクラスを使用してデータベースからデータを返していますが、ループが完了した後に追加の array_merge ロジックを実行することなく、同じ配列にデータを入れることができますか?

foreach ($saved_forms[0] as $key => $value) {
     $this->db->select('form_text');
     $this->db->from('form_labels');
     $this->db->where('form_label', $key );
     $query = $this->db->get();

       $form_names  = $query->result_array();
       $form_titles[] = $form_names;

    }

結果配列

[4] => Array
    (
        [0] => Array
            (
                [form_text] => Participant Name
            )

    )

[5] => Array
    (
        [0] => Array
            (
                [form_text] => Date of Birth
            )

    )

私が欲しいもの:

 [0] => Array
       (
        [form_text] => Participant Name
        [form_text] => Date of Birth
       )
4

4 に答える 4

3

これを試して

$query = $this->db->select('form_text')
         ->from('form_labels');
         ->where_in('form_label', array_keys($saved_forms[0]));
         ->get();

foreach( $query->result as $label){
   $form_titles[] = $label->form_text;
}

テキストを含む単一の配列が生成されます

于 2013-09-06T19:57:09.723 に答える
2

PHP 5 >= 5.5.0 を実行している場合、組み込み関数を使用してこれを実現できます。array_column()

$form_names = $query->result_array();
$my_array = array_column($form_names, 'form_text');

プロデュース:

Array ( 
 [0] => Participant Name 
 [1] => Date of Birth 
)
于 2014-11-25T05:25:57.033 に答える
1

foreach を使用where_in()してすべてのキーを取得し、クエリを一度に実行して、クエリを何度も実行する必要がないようにします。

$keys=array();
foreach ($saved_forms[0] as $key => $value) {         
    $keys[] = $key;    
}

$this->db->select('form_text');
$this->db->from('form_labels');    
$this->db->where_in('form_label', $keys); 
// or $this->db->or_where_in();   
$query = $this->db->get();
$form_names  = $query->result_array();
于 2013-09-06T19:35:41.163 に答える