2016-08-10 2 views
0

Я пытаюсь построить массив в Codeigniter 3, но я не могу его структурировать правильно.Создание массива в PHP с помощью Codeigniter

У меня есть 2 стола, которые мне в основном нужно комбинировать; вопросы и связанные с ними ответы.

SO, в основном мне нужен многомерный массив, каждый внутренний массив должен содержать данные вопроса вместе со связанными с ним данными ответа.

Это то, что я делаю в данный момент:

$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; 

Но что выводит каждый вопрос как массив сама по себе, а также каждый ответ, мне нужно, чтобы объединить их каким-то образом. Это то, что я получаю:

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" 
} 

и это то, что мне нужно:

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" 
} 

Я пытался что-то вроде array_push, но я не могу показаться, чтобы заставить его работать?

Любые идеи, что я могу попробовать?

+0

Можете ли вы опубликовать результат 'var_export ($ course_object-> результат());' – Hackerman

ответ

2

Самый простой способ сделать это - создать новый массив с тем, что вам нужно, и добавить его к $question_array, вот так. Для ответов вам понадобится новый subarray, потому что вы не можете дублировать ключи в массиве.

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

работает как шарм, спасибо! – frobak

0

Я думаю, что это должно сработать.

$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; 
Смежные вопросы