Как рассчитать средний рейтинг каждого данного рейтинга? - PullRequest
0 голосов
/ 13 октября 2018

У меня есть следующие данные в следующем порядке (product_name -> stars):

Product 1 -> 5
Product 2 -> 4
Product 3 -> 3
Product 4 -> 2
Product 5 -> 3

Теперь я хочу вычислить средний рейтинг каждого данного рейтинга.Например: Средний рейтинг 5 звезд и т. Д. *

Я пробовал следующее для пяти звезд:

$star = 0;
foreach($rates as $rate) { 
   $star = $star + $rate->stars 
}
$avg = $star / count($rates);
return $avg;

Результат равен 5. Теперь, если я умножу это будет 100,тогда это становится 500%.Я хочу, чтобы он был ниже 100%.Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 13 октября 2018
$star5 = $star4 = $star3 = $star2 = $star1 = 0;
foreach($rates as $rate) {
    switch ($rate->stars) {
        case 1:
            $star1++;
            break; 
        case 2:
            $star2++;
            break; 
        case 3:
            $star3++;
            break; 
        case 4:
            $star4++;
            break; 
        case 5:
            $star5++;
            break; 
    }

}
$percent1 = ($star1 / count($rates)) * 100; // percent
return $percent1;
0 голосов
/ 13 октября 2018

В PHP вы можете сделать это, чтобы получить средний рейтинг.

$ratings = array:4 [▼
          0 => {#128 ▼
            +"product_name": "P1"
            +"stars": 5
          }
          1 => {#129 ▼
            +"product_name": "P2"
            +"stars": 3
          }
          2 => {#130 ▼
            +"product_name": "P3"
            +"stars": 2
          }
          3 => {#131 ▼
            +"product_name": "P4"
            +"stars": 4
          }
        ]

, тогда вам просто нужно добавить это

function getStars($v) {
    return $v->stars;
}
$ratings = array_map("getStars",$rates);
$score_count = count($ratings);
$score_sum = array_sum($ratings);
$mean_average = $score_sum / $score_count;
var_dump($mean_average);exit;

Я думаю, это поможет вам.

...