проблема с вычислением всех элементов в массиве

#php #mysql #arrays

#php #mysql #массивы

Вопрос:

 $query = $db->query("SELECT * FROM orders");

while ($row = mysql_fetch_array($query)) {
    $cost= array_sum($row['cost']);
}
  

Это не работает, я хочу вычислить сумму всех элементов, но я получаю эту ошибку:

Предупреждение: array_sum() ожидает, что параметр 1 будет массивом, строка, указанная в C:xampphtdocsfalcoclassescontroller.php в строке 303

Есть идеи, как вычислить все элементы, поступающие из mysql?

Спасибо за ваше время и помощь.

Комментарии:

1. Причина, по которой ваше решение выдает ошибку, заключается в том, что кажется, что $row — это массив (содержащий одну строку из вашей таблицы), а $row[‘cost’] — это единственное значение. Кроме того, вы пытаетесь суммировать одну строку, поэтому результатом будет значение поля cost . Приведенные ниже ответы являются разумными вариантами, особенно select sum(cost) from foo... инструкция mysql

Ответ №1:

Почему бы не позволить MYSQL справиться с этим?

$query = $db-> запрос(«ВЫБЕРИТЕ заказы.*,СУММА (стоимость) как sum_cost ИЗ заказов»);

Ответ №2:

Если вам нужна просто сумма, вы можете позволить базе данных сделать это за вас:

  Select sum(cost) from orders
  

Ответ №3:

Попробуйте это:

 $query = $db->query("SELECT * FROM orders");
$cost = 0;
while ($row = mysql_fetch_array($query)) {
    $cost  = $row['cost'];
}
  

Или из mysql:

 $query = $db->query("SELECT sum(`cost`) as `cost` FROM orders");
while ($row = mysql_fetch_array($query)) {
    $cost = $row['cost'];
}
  

Ответ №4:

это должно сработать:

 $query = $db->query("SELECT * FROM orders");

$cost = 0;
while ($row = mysql_fetch_array($query)) {
    $cost  = $row['cost'];
}
  

или даже лучше

 $query = $db->query("SELECT SUM(cost) FROM orders");
list($cost) = mysql_fetch_row($query);
  

Ответ №5:

Действительно, звучит так, как будто вам просто нужна сумма.

 'SELECT SUM(cost) as sum_cost FROM ORDERS'