我正在制作一个星级评分(5星是最好的,1是坏的),我有4个用户投票的4条记录。
user1: 3
user2: 4
user3: 5
user4: 3
我怎样才能计算出php的平均值?
只是简单的数学,$ count = $ user1 + $ user2 + $ user3 + $ user4 / 4?
我试过了:
echo round(3+4+5+3/4);
并得到数字“13”,这是不正确的
答案 0 :(得分:8)
在数学除法之前加上,所以你应该把你的等式重写为(3 + 4 + 5 + 3)/ 4
答案 1 :(得分:4)
您正在遇到运营商优先级。除法之前会计算除法,所以你得到了这个(为了清晰起见,增加了括号):
3 + 4 + 5 + (3 / 4)
...然后四舍五入为13.
请改为尝试:
$count = ($user1 + $user2 + $user3 + $user4 ) / 4
答案 2 :(得分:2)
分部优先于增加。而不是你做什么,使用
echo round((3+4+5+3)/4);
答案 3 :(得分:1)
您有2种选择如何存储选票
a)与你现在分开(user1:5; user2:3; user3:4; ...)
b)或者你可以汇总投票
你最有可能实施了选项a),但是让我告诉你b)的选项是什么
当您汇总投票时,对于每个帖子/文章/新闻,您只存储2个值 - 投票数和平均评分。
这有助于您在每次渲染页面时更快,更轻松地检索平均评分
但是,当用户投票时,您需要做一些数学计算来更新平均评分。
假设存储的值如下
平均评分 = 3.3
投票数 = 5
如果用户投票3
,您需要同时更新平均评分和投票数:
新票数 = [old number of votes] + 1
(5 + 1 = 6 )
新的平均评分 =
([old average rating] * [old number of votes] + [current vote]) / [new number of votes]
((3.3 * 5 + 3)/ 6 = 3.25 )
然而,以这种方式存储投票也有一个缺点 - 你无法看到个人用户如何投票。如果要求说明您需要查看个人用户的投票方式,请结合方法a)和b),您就可以了。
答案 4 :(得分:0)
您必须在分组前对您的添加进行分组。
回波((3 + 4 + 5 + 3)/ 4);
答案 5 :(得分:0)
<?php
echo round((3+4+5+3)/4);
or
$user1=3;
$user2=4;
$user3=5;
$user4=3
echo $count = ($user1 + $user2 + $user3 + $user4 ) / 4
op-->4
?>
试试这个完美的工作..