Например, у меня есть результаты mysql_num_rows 4,8,15,16,23,42 в запросе, который находится внутри цикла while другого запроса. Мой вопрос в том, как я могу суммировать все результаты внутри цикла while? (Всего 133) Спасибо.
РЕДАКТИРОВАТЬ:
Как насчет того, хочу ли я получить процент за каждый результат mysql_num_rows внутри моего цикла while? Пример: 4,8,15,16,23,42. Итого 108. $ sum = 108. Процент 4 = 4 / $ sum = 3,7%, 8 = 8 / $ sum = 7,4% и т. Д.
Попробуйте что-то вроде этого:
$Sum = 0; while ($SomeInvariant) { mysql_query($SomeQuery); $Sum += mysql_num_rows(); } echo 'The sum is: ' . $Sum;
Однако этот подход не очень эффективен (что, если $SomeInvariant
верно для многих итераций, а ваше приложение имеет еще больше одновременных пользователей?). Для этого я бы рекомендовал реструктурировать ваш подход, чтобы добавление было выполнено в SQL. Таким образом, ваш запрос может выглядеть примерно так: SELECT SUM(ColumnName) FROM ...
ОБНОВЛЕНИЕ: Рассмотрение последующего вопроса в комментариях
Если у вас еще нет суммы, доступной из запроса, вам придется дважды перебирать набор данных. На первом проходе вы рассчитаете сумму. На втором проходе вы вычисляете отношение каждого значения к сумме.
Например:
$Sum = 0; $Rows = array(); while ($SomeInvariant) { mysql_query($SomeQuery); $Value = mysql_num_rows(); $Rows[] = $Value; // Push the value onto the row array $Sum += $Value; // Add the value to the cumulative sum } echo 'The sum is: ' . $Sum; foreach ($Rows as $Row) { echo $Row . '/' . $Sum . ' = ' . number_format($Row / $Sum) . '%'; }