【问题标题】:Building an array in PHP with Codeigniter使用 Codeigniter 在 PHP 中构建数组
【发布时间】:2016-08-10 13:19:58
【问题描述】:

我正在尝试在 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 之类的东西,但我似乎无法让它工作?

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

【问题讨论】:

  • 你能把var_export($course_object->result());的结果贴出来

标签: php arrays codeigniter loops codeigniter-3


【解决方案1】:

最简单的方法是使用您需要的内容创建一个新数组,并将其附加到$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;
}

【讨论】:

    【解决方案2】:

    我认为这应该可行。

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

    【讨论】:

      猜你喜欢
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      • 1970-01-01
      • 2021-09-05
      • 2018-12-20
      • 2015-04-23
      • 2011-04-10
      相关资源
      最近更新 更多