2016-08-10 1 views
0

Ich versuche, ein Array in Codeigniter 3 zu bauen, aber ich kann nicht scheinen, es richtig zu strukturieren.Erstellen eines Arrays in PHP mit Codeigniter

Ich habe 2 Tabellen, die ich im Grunde kombinieren muss; Fragen und ihre zugehörigen Antworten.

SO, im Grunde brauche ich ein mehrdimensionales Array, jedes innere Array soll die Fragedaten zusammen mit den zugehörigen Antwortdaten enthalten.

Das ist, was ich im Moment tun:

$question_array = array(); 

foreach($course_object->result() as $question){ 

    $question_array[] = array (
     'question_id' => $question->question_id, 
     'question' => $question->question, 
    ); 

    $answer_data = $this->get_answer_data($question->question_id); 

    foreach($answer_data as $answer){ 
     $question_array[]['answer'] = $answer->answer; 
     $question_array[]['result'] = $answer->result; 
    } 
} 

return $question_array; 

Aber das gibt jede Frage als Array auf seinem eigenen, sowie jede Antwort, ich brauche sie irgendwie zu kombinieren. Das ist, was ich immer:

array(2) { 
    ["question_id"]=> 
    string(3) "548" 
    ["question"]=> 
    string(29) "Who enforces fire safety law?" 
} 

array(1) { 
    ["answer"]=> 
    string(11) "The Manager" 
} 

array(1) { 
    ["result"]=> 
    string(1) "0" 
} 



array(1) { 
    ["answer"]=> 
    string(18) "The Fire Authority" 
} 


array(1) { 
    ["result"]=> 
    string(1) "1" 
} 

und das ist, was ich brauche:

array(2) { 
    ["question_id"]=> 
    string(3) "548" 
    ["question"]=> 
    string(29) "Who enforces fire safety law?" 
    ["answer"]=> 
    string(11) "The Manager" 
    ["result"]=> 
    string(1) "0" 
    ["answer"]=> 
    string(18) "The Fire Authority" 
    ["result"]=> 
    string(1) "1" 
} 

Ich habe versucht, Dinge wie array_push aber ich kann es scheinen, um zu arbeiten?

Irgendwelche Ideen, was ich versuchen kann?

+0

Können Sie nach dem Ergebnis von 'var_export ($ course_object-> Ergebnis());' – Hackerman

Antwort

2

Der einfachste Weg, dies zu tun ist, ein neues Array mit dem, was Sie brauchen, zu erstellen und an die $question_array, wie folgt anhängen. Sie benötigen ein neues Subarray für die Antworten, da Sie keine doppelten Schlüssel in einem Array haben können.

foreach($course_object->result() as $question){ 

    $q_array = array (
     'question_id' => $question->question_id, 
     'question' => $question->question, 
     'answers'  => array() 
    ); 

    $answer_data = $this->get_answer_data($question->question_id); 

    foreach($answer_data as $answer){ 
     $q_array['answers'][] = array(
      'answer' => $answer->answer, 
      'result' =>$answer->result 
     ); 
    } 
    $question_array[] = $q_array; 
} 
+0

wirkt wie ein Zauber, danke! – frobak

0

Ich denke, das sollte funktionieren.

$question_array = array(); 

$i = 0; 
foreach($course_object->result() as $question){ 

    $question_array[$i] = array (
     'question_id' => $question->question_id, 
     'question' => $question->question, 
    ); 

    $answer_data = $this->get_answer_data($question->question_id); 

    foreach($answer_data as $answer){ 
     $question_array[$i]['answer'][] = $answer->answer; 
     $question_array[$i]['result'][] = $answer->result; 
    } 

    $i++; 
} 

return $question_array; 
Verwandte Themen