массивы — PHP array_sum многомерный

Мне нужно получить array_sum из $ product [‘stars’]; так что я могу использовать его, чтобы найти среднее. Когда я пытаюсь использовать это, я не использую это как-то на массиве? Также я считаю, что это приходит как строка. Нужно ли конвертировать в INT? Большое спасибо за любые идеи.

<?php

$categories = array();
while ($row_rsCategories = mysqli_fetch_assoc($res)) {

$product_array = array();
$product_array_query = mysqli_query($mysqli,"SELECT id, user_id, client_id, comments, stars FROM reviews WHERE user_id = '".$row_rsCategories['userId']."'");

while($product_array_fetch = mysqli_fetch_array($product_array_query)) {

$product_array[] = array("id"=>$product_array_fetch['user_id'],"comments"=>$product_array_fetch['comments'],"stars"=>$product_array_fetch['stars']);

}$categories[] = array(
'id' => $row_rsCategories['userId'],
'name' => $row_rsCategories['usersName'],
'products' => $product_array,
);
}

foreach ($categories as $category) {?><div class="col-md-4">
<div id = "user-square">
<div class="avatar">
<img src="<?php echo $avatarDir.$list['usersAvatar']; ?>" class="publicAvatar" />
</div>

<?php

echo $category['name']; ?> </br>

<?php foreach($category['products'] as $product) {
echo $product['stars']; ?> </br>
<?php   }

?>

0

Решение

Вы могли бы сделать это, комбинируя array_sum с array_map:

$starsum = array_sum(array_map(function($x) { return $x['stars']; }, $product_array));

Но вы также можете просто вычислить сумму при построении массива результатов:

$starsum = 0;
$rowcount = 0;
while($product_array_fetch = mysqli_fetch_array($product_array_query)) {
$product_array[] = array("id"=>$product_array_fetch['user_id'],"comments"=>$product_array_fetch['comments'],"stars"=>$product_array_fetch['stars']);
$starsum += $product_array_fetch['stars'];
$rowcount++;
}

$categories[] = array(
'id' => $row_rsCategories['userId'],
'name' => $row_rsCategories['usersName'],
'products' => $product_array,
'avgstars' => ($rowcount == 0) ? 0 : $starsum / $rowcount
);

Нет необходимости конвертировать значения в целые числа, PHP сделает это автоматически, когда вы используете над ними арифметические функции.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]