首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用php分解和重新匹配数据

用php分解和重新匹配数据
EN

Stack Overflow用户
提问于 2019-03-21 12:14:18
回答 1查看 41关注 0票数 0

您好,请帮我解决这个问题,我在表data_result中有这样的数据

代码语言:javascript
复制
  | uniqueid | question | answers | remark |
  | 10001 | Q0003,Q0001,Q0004| Yes,No,Yes | ,none,yes |
  | 10002 | Q0002,Q0009,Q0008 | No,Yes,Yes | yes,,No |
  | 10003 | Q0007,Q0003,Q0006 | Yes,Yes,Yes | ,,, |

我有一张master_question桌子

代码语言:javascript
复制
  | que_code | question |
  | Q0001  | Where do you live ? |
  | Q0002  | Your birthday ? |
  | Q0003  | ...... |
  | ....   | ...... |

我想像这样展示结果

代码语言:javascript
复制
|uniqueid|Q0001|remark|Q0002|remark|Q0003|remark| ...
|10001 | No | none | - | - | Yes | - | ...
|10002 | - | - | No | Yes | - | - | ...

我试了一下,但结果不正确

代码语言:javascript
复制
foreach ($get_data_all->result() as $data) {
    $resultdata[$data->uniqueid]['uniqueid'] = $data->uniqueid;
    $que = $data->questionList;
    $ans = $data->answerList;
    $rem = $data->remarksList;

    $question = explode(',',$que);
    $answer = explode(',',$ans);
    $remark = explode(',',$rem);

    $new = array();
    for($i=0;$i<count($question);$i++){
        if(isset($question[$i])){
            $question[$i] = $question[$i];
        }
        else {
            $question[$i] = null;
        }
        if(isset($answer[$i])){
            $answer[$i] = $answer[$i];
        }
        else {
            $answer[$i] = null;
        }
        if(isset($remark[$i])){
            $remark[$i] = $remark[$i];
        }
        else {
            $remark[$i] = null;
        }
        $new[$i] = array("question"=>$question[$i],"answer"=>$answer[$i],"remark"=>$remark[$i]);
    }

    $master_question = $this->m_report_result->master_question();

    foreach ($master_question->result() as $mque) {
        foreach ($new as $nilai) {
            $nilai = (object)$nilai;
            //echo "$nilai->question\n";
            //echo "$nilai->answer\n";
            //echo "$nilai->remark\n";
            if($mque->question_code == $nilai->question){
                $resultdata[$data->uniqueid]['answer'] = $nilai->answer;
                $resultdata[$data->uniqueid]['remark'] = $nilai->remark;  
            }else{
                $resultdata[$data->uniqueid]['answer'] = '';
                $resultdata[$data->uniqueid]['remark'] = '';
            }
        }
    }
}

我坚持这一点,我尝试循环主问题,并将答案和备注值与问题代码进行匹配。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-21 13:16:15

使$new成为一个关联数组,其关键字是问题ID。这样你就不需要嵌套循环了,你可以使用isset()来测试这个问题是否有结果。

代码语言:javascript
复制
$question_list = $this->m_report_result->master_question()->result();
echo "<table><tr><th>uniqueid</td>";
foreach ($question_list as $mque) {
    echo "<th>$mque->question_code</th><th>remark</th>";
}
echo "</tr>";

foreach ($get_data_all->result() as $data) {
    $que = $data->questionList;
    $ans = $data->answerList;
    $rem = $data->remarksList;

    $questions = explode(',',$que);
    $answers = explode(',',$ans);
    $remarks = explode(',',$rem);

    $new = array();
    foreach ($questions as $i => $question){
        $answer = $answers[$i] ?? null;
        $remark = $remarks[$i] ?? null;
        $new[$question] = array("answer"=>$answer[$i],"remark"=>$remark[$i]);
    }
    echo "<tr><td>$data->uniqueid]</td>";
    foreach ($question_list as $mque) {
        $que_code = $mque->question_code;
        if (isset($new[$que_code])) {
            echo "<td>{$new[$que_code]['answer']}</td><td>{$new[$que_code]['remark']}</td>";
        } else {
            echo "<td>-</td><td>-</td>";
        }
    }
    echo "</tr>";
}
echo "</table>";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55273690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档