php实现调查结果百分比显示,【PHP】统计问卷调查结果的选项票数和百分比

遇到问题:

有以下数组,每一条记录是用户的每一条问卷题目的回答情况,q_id是问题id,o_id是选项id。需要统计每一个选项被选择的次数和每个选项占该问题的百分比。如问题1的选项有A和B,一个用户选择了A之后,则问题1A选项是1票占比100%,问题1B选项是0票占比0%。

array(49) {

[0] => array(2) {

["q_id"] => string(2) "57"["o_id"] => string(3) "125"}

[1] => array(2) {

["q_id"] => string(2) "58"["o_id"] => string(3) "129"}

[2] => array(2) {

["q_id"] => string(2) "59"["o_id"] => string(3) "131"}

[3] => array(2) {

["q_id"] => string(2) "65"["o_id"] => string(3) "145"}

[4] => array(2) {

["q_id"] => string(2) "57"["o_id"] => string(3) "126"}

[5] => array(2) {

["q_id"] => string(2) "58"["o_id"] => string(3) "130"}

}

解决方法:

$oCount = array_count_values(array_column($aList,‘o_id‘));//统计选项

$qCount = array_count_values(array_column($aList,‘q_id‘));//统计该问题总共选项

$oCount数组如下,记录每个选项被选择次数。

array(18) {

[125] => int(3)

[129] => int(1)

[131] => int(3)

[145] => int(3)

[126] => int(2)

[130] => int(6)

}

$qCount数组如下,记录每道题下面的被回答次数。

array(8) {

[57] => int(9)

[58] => int(7)

[59] => int(6)

[65] => int(7)

[64] => int(5)

[66] => int(5)

[67] => int(5)

[68] => int(5)

}

然后需要联系到每个选项的父id,即问题id

foreach ($oCount as $k => $v){//$q_id为该选项所属的问题id

$q_id = M(‘h1_answer as a‘)-> join(‘by_h1_option as o on o.id = a.o_id‘)-> where(‘o.id=‘.$k)-> getField(‘q_id‘);$count[$k] =[‘num‘ => $v,//票数

‘persent‘ => round($v/$qCount[$q_id]*100,2)//统计百分比

];

}

打印结果,就可以得到每个选项的票数和占题目百分比了

[125] => array(2) {

["num"] => int(3)

["persent"] => float(33.33)

}

[129] => array(2) {

["num"] => int(1)

["persent"] => float(14.29)

}

[131] => array(2) {

["num"] => int(3)

["persent"] => float(50)

}

[145] => array(2) {

["num"] => int(3)

["persent"] => float(42.86)

}

[126] => array(2) {

["num"] => int(2)

["persent"] => float(22.22)

}

[130] => array(2) {

["num"] => int(6)

["persent"] => float(85.71)

}

原文:https://www.cnblogs.com/BearLee/p/10684817.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值