我的代码是这样的:
<?php
$rating = 5;
$rating_detail = '{"3":"1","4":"2"}';
$array_data = json_decode($rating_detail, true);
if(array_key_exists($rating, $array_data)) {
$value = $array_data[$rating];
if ($value !== false) {
$array_data[$rating] = (string)((int)$value + 1);
}
$rating_detail = json_encode($array_data);
}
else {
$data = substr($rating_detail, 0, -1);
$rating_detail = $data.',"'.$rating.'":"1"}';
}
echo '<pre>';print_r($rating_detail);echo '</pre>';die();
?>
如果代码运行,结果如下:
{ “3”: “1”, “4”: “2”, “5”: “1”}
商店的详细评级
注意:
3 =评级3,1 =给出评级的用户数量:1
4 =评级4,2 =给出评分的用户数量:2
5 =评级5,1 =给出评分的用户数量:1
如何计算详细评级的平均评分?
因此,商店详细评级的平均评级在1 - 5之间
更新
所以从这里开始:
{ “3”: “1”, “4”: “2”, “5”: “1”}
根据该评级的详细信息,如何计算商店的评级?
答案 0 :(得分:2)
试试这个
$rating = 5;
$rating_detail = '{"3":"1","4":"2"}';
$rating_detail = json_decode($rating_detail, true);
if(array_key_exists($rating, $rating_detail)) {
$rating_detail[$rating] = (string)((int)$rating_detail[$rating] + 1);
}
else {
$rating_detail[$rating]="1";
}
$totalStar=$totalRate=0;
foreach ($rating_detail as $key=>$value){
$totalStar+=$key*$value;
$totalRate+=$value;
}
$average=$totalStar/$totalRate;
它给出了