Как перебрать массив из запроса, чтобы вернуть итог? - PullRequest
1 голос
/ 10 декабря 2010

Я пытаюсь получить общее количество из базы данных. Вот текущая настройка.

У меня есть много записей со столбцом с именем total_cost (десятичное поле), и я написал оператор select, чтобы выбрать все total_cost и поместить его в массив с именем $ total_cost.

Теперь я пытаюсь сложить все затраты, чтобы получить сумму, и я пытаюсь это с этим.

foreach ($total_cost as $cost) :
$cost = $cost + $cost['total_cost'];
endforeach;

echo $cost;

Это не сработало ...

Есть идеи, почему?

Ответы [ 2 ]

3 голосов
/ 10 декабря 2010

Вам не нужно использовать цикл, вы можете получить общую стоимость прямо с сервера mysql, как этот

SELECT sum(total_cost) AS total_cost FROM tbl_name WHERE conditions ...

Выше будет суммироваться total_cost для полей, которые удовлетворяют условиям, и возвращать ихтак что вам не нужно зацикливаться на php.

Почему я рекомендую использовать это?скажем, у вас есть записи 2Mil, и вы хотите узнать общую стоимость, ваша текущая установка запросит затраты 2Mil, поместит их в память и проведет их через цикл.Не очень эффективно, не так ли?когда вы можете получить сумму прямо из mysql, чтобы вам не нужно было хранить массив ключей 2Mil в памяти.

2 голосов
/ 10 декабря 2010

Проблема с вашим текущим кодом в том, что $code перезаписывается в начале каждой итерации цикла. Чтобы исправить это хранилище, ваш промежуточный итог в другой переменной:

$result = 0;
foreach ($total_cost as $cost) :
$result += $cost['total_cost'];
endforeach;

echo $result;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...