使用 Codeigniter 在 PHP 中构建数组

Building an array in PHP with Codeigniter

我正在尝试在 Codeigniter 3 中构建一个数组,但我似乎无法正确构建它。

我基本上需要合并 2 个表;问题及其相关答案。

所以,基本上我需要一个多维数组,每个内部数组都包含问题数据及其相关的答案数据。

这就是我现在正在做的事情:

$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 之类的方法,但似乎无法正常工作?

有什么我可以尝试的想法吗?

最简单的方法是用您需要的内容创建一个新数组,并将其附加到 $question_array,如下所示。您需要一个新的子数组来获取答案,因为数组中不能有重复的键。

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

我认为这应该可行。

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