{
"errno": 0,
"errdesc": "操作成功",
"timestamp": 1584168603,
"data": {
"survey_info": {
"id": "1",
"title": "你吃了吗?",
"begin_time": "2020-03-10",
"end_time": "2020-03-20"
},
"question_list": [
{
"id": "1",
"survey_id": "1",
"subject": "吃什么?",
"type": "2",
"weight": "0",
"create_time": "1583892834",
"deleted": "0",
"answer_arr": [
"1",
"2",
"3",
"4",
"1",
"2",
"3"
],
"item": [
{
"id": "1",
"question_id": "1",
"option": "苹果",
"create_time": "1583892834",
"deleted": "0",
"percent": "28.57"
},
{
"id": "2",
"question_id": "1",
"option": "梨子",
"create_time": "1583892834",
"deleted": "0",
"percent": "28.57"
},
{
"id": "3",
"question_id": "1",
"option": "香蕉",
"create_time": "1583892834",
"deleted": "0",
"percent": "28.57"
},
{
"id": "4",
"question_id": "1",
"option": "西瓜",
"create_time": "1583895206",
"deleted": "0",
"percent": "14.28"
}
]
},
{
"id": "2",
"survey_id": "1",
"subject": "好吃吗?",
"type": "1",
"weight": "0",
"create_time": "1583894553",
"deleted": "0",
"answer_arr": [
"5",
"5"
],
"item": [
{
"id": "5",
"question_id": "2",
"option": "好吃",
"create_time": "1583895231",
"deleted": "0",
"percent": "100.00"
},
{
"id": "6",
"question_id": "2",
"option": "不好吃",
"create_time": "1583895231",
"deleted": "0",
"percent": "0.00"
}
]
},
{
"id": "3",
"survey_id": "1",
"subject": "你有什么意见?",
"type": "3",
"weight": "0",
"create_time": "1583895248",
"deleted": "0"
}
]
}
}
/**
* 获取调查问卷统计
*/
public function getSurveyStat() {
$survey_id = $_POST['survey_id'];
// 获取基本信息
$out_data = [];
$survey = M('survey');
$survey_info = $survey->where(['id'=>$survey_id])->field('id,title,begin_time,end_time')->find();
$survey_info['begin_time'] = date('Y-m-d',$survey_info['begin_time']);
$survey_info['end_time'] = date('Y-m-d',$survey_info['end_time']);
$out_data['survey_info'] = $survey_info;
// 获取问卷题目
$survey_question = M('survey_question');
$question_list = $survey_question->where(['survey_id'=>$survey_id,'deleted'=>0])->select();
$survey_answer = M('survey_answer');
foreach($question_list as $k=>&$v) {
if (in_array($v['type'],['1','2'])) { // 单选、多选
// 获取题目选项和统计结果,如果没有填写则为0(获取总的回答数,然后用每个选项的回答数去除)
$survey_question_item = M('survey_question_item');
$survey_question_item_list = $survey_question_item->where(['question_id'=>$v['id'],'deleted'=>0])->select();
// 获取当前题目的总的回答数
$survey_answer_list = $survey_answer->where(['question_id'=>$v['id'],'deleted'=>0])->getField('answer',true);
$answer_arr = [];
foreach ($survey_answer_list as $sk => &$sv) {
$tmp_answer = explode(',',trim($sv,','));
$answer_arr = array_merge($answer_arr,$tmp_answer); // 合并数组
}
$answer_item_count = array_count_values($answer_arr); // 获取数组中值的个数
$total_answer_count = count($answer_arr);
foreach ($survey_question_item_list as $qk => &$qv) {
if ($total_answer_count == 0) {
$qv['percent'] = 0;
} else {
$tmp_item_count = (int)$answer_item_count[$qv['id']];
$qv['percent'] = MathUtil::div($tmp_item_count * 100 , $total_answer_count);
}
}
$v['answer_arr'] = $answer_arr;
$v['item'] = $survey_question_item_list;
}
}
$out_data['question_list'] = $question_list;
$this->json->S($out_data);
}