@amazinginternetsites

Как вывести сумму элементов в цикле?

Друзья, данные выводятся следующим образом:

while($row = mysql_fetch_assoc($sql)):
$i++;
 
    if(checkKod($i)):
            
        $size = isset($sizes[$row['id']]) ? $sizes[$row['id']] : $S_1_s1;
        if(($row['price'] * $size)!=0):
        $pdf->Row(
            array(
                $row['id'],
                $row['name'],
                $size,
                $row['type'],
                $row['price'],
                $row['price'] * $size
            )
        );endif;
    endif;
endwhile;


Не могу вывести сумму всех значений:

$row['price'] * $size
  • Вопрос задан
  • 3574 просмотра
Решения вопроса 1
Тогда так:
<?php
$all_price = array();
while($row = mysql_fetch_assoc($sql)):
$i++;

    if(checkKod($i)):
        $size 	= isset($sizes[$row['id']]) ? $sizes[$row['id']] : $S_1_s1;
        $sum 	= $row['price'] * $size;
        if($sum != 0):
            $pdf->Row(
            array(
                'id' => $row['id'],
                'name' => $row['name'],
                'size' => $size,
                'type' => $row['type'],
                'price' => $row['price'],
                'sum' => $sum
            )
            );
			
			$all_price [] = $sum;
        endif;
    endif;
    
endwhile;

echo array_sum($all_price);
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Возможно вам стоит создать массив и воспользоваться функцией array_sum?
/*.......*/
$all_price [] = $row['price'];
endwhile;
echo array_sum($all_price);
Ответ написан
Из вашего куска кода мало понятного, откуда, куда, что. Возможно вам будет лучше разобраться посмотрев на это:

while($row = mysql_fetch_assoc($sql)):
$i++;

	if(checkKod($i)):
		$size 	= isset($sizes[$row['id']]) ? $sizes[$row['id']] : $S_1_s1;
		$sum 	= $row['price'] * $size;
		if($sum != 0):
			$pdf->Row(
			array(
				'id' => $row['id'],
				'name' => $row['name'],
				'size' => $size,
				'type' => $row['type'],
				'price' => $row['price'],
				'sum' => $sum
			)
			);
		endif;
	endif;
	
endwhile;
Ответ написан
@hats
Я бы на вашем месте не считал этого в PHP, а сразу же нужные данные получил из БД.
На сколько понимаю, у вас следующий запрос делает выборку из БД:
SELECT * FROM table_with_products
Сразу возникает вопрос где вы храните массив размеров? Если в БД есть таблица с размерами и вы перед этим запросом ее выбирали из базы в таком же цикле, то правильней было бы написать следующий запрос:
SELECT t1.id,t1. name, t1.type, t1.price, t2.size, t1.price* t2.size as sum
  FROM table_with_products as t1
  INNER JOIN table_with_sizes as t2
    ON t1.id = t2.id_from_table_with_products
  WHERE t1.price* t2.size > 0

После чего делаете простейшую выборку из БД:
while($row = mysql_fetch_assoc($sql)){
    $pdf->Row(
        array(
            'id' => $row['id'],
            'name' => $row['name'],
            'size' => $size,
            'type' => $row['type'],
            'price' => $row['price'],
            'sum' => $sum
            )
    );
}

Если в базе нет таблицы с размерами, то я вам настоятельно рекомендую ее создать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы