Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как суммировать значение массива foreach?
Форумы портала PHP.SU » » Вопросы новичков » Как суммировать значение массива foreach?

Страниц (1): [1]
 

1. zapatronen - 12 Января, 2016 - 18:20:27 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $basket=unserialize(base64_decode($row['basket']));
  2.     foreach($basket as $tovar=>$value){
  3.         $query="SELECT * FROM beta WHERE article='".$tovar."'  ";
  4.         $data = mysqli_query($dbc, $query);
  5.         $row = mysqli_fetch_array($data);


Выводит список покупаемых товаров клиента

Но как сделать так чтобы повторяющийся ключ слился в один, а значения суммировались?

Например
Исходная:

ARduino uno 1
ARduino uno 3
ARduino uno 5
плата расширегия 2
джамперы 3
джамперы 4

Нужно чтобы получилось так:
ARduino uno 9
плата расширегия 2
джамперы 7


Делаю это, чтобы подсчитать сколько определенного товара продалось за месяц

Подскажите хоть что читать
С уважением, Павел
2. google_funny - 12 Января, 2016 - 22:39:25 - перейти к сообщению
zapatronen

Выложите дамп (содержимое) хотя-бы нескольких строк из вашей таблицы beta, к которой вы обращаетесь, и обязательно, включите в дамп - название колонок!
Просто хочется понять какие у вас там колонки и какое содержимое строк этой таблицы.

Вообще, если по-человечески, то каждое наименование вашего товара должно выводится в виде массива, в котором будет содержатся кол-во продаж для нужного вам промежутка времени.. вот потом, мы сможем просто сложить кол-во для каждого наименования..

вот примерно такой должен быть результат обращения к базе данных..
PHP:
скопировать код в буфер обмена
  1.  
  2. [0] => array (
  3.    ['товар1'] => array(
  4.        [0]=>2,
  5.        [1]=>3,
  6.        [2]=>6,
  7.        [3]=>5
  8.    ),
  9.    ['товар2'] => array(
  10.       [0]=>3,
  11.       [1]=>34,
  12.       [2]=>4
  13.    ),
  14.   ['товар678'] => array(
  15.       [0]=>345,
  16.       [1]=>21,
  17.       [2]=>89,
  18.       [3]=>89
  19.    )  
  20. )
  21.  


а так более кнкретно нужно смотреть, как там все организовано..
3. DelphinPRO - 13 Января, 2016 - 10:12:19 - перейти к сообщению
мне кажется, что количество товара можно подсчитать средствами БД и сразу получить нужный результат.
4. zapatronen - 13 Января, 2016 - 16:33:33 - перейти к сообщению
Вот как подсказали, работает
<?
$query="SELECT basket FROM orders WHERE date_format(times, '%Y%m') = date_format(date_add(now(), interval -1 month), '%Y%m') ";
$result=mysqli_query($dbc, $query) or die("dddd");
$prods = array();
while($row=mysqli_fetch_array($result)){
$basket=unserialize(base64_decode($row['basket']));
foreach($basket as $tovar=>$value){
if (!isset($prods[$tovar])) {
$prods[$tovar] = $value;
} else {
$prods[$tovar] += $value;
}


$query="SELECT * FROM beta WHERE article='".$tovar."' ORDER BY name ";
$data = mysqli_query($dbc, $query);
$row = mysqli_fetch_array($data);
//...
}
}
print_r($prods);
5. dcc0 - 13 Января, 2016 - 17:28:01 - перейти к сообщению
Из учебника здесь на сайте:
PHP:
скопировать код в буфер обмена
  1. Следующие операторы выведут, соответственно, колличество записей в таблице CLIENTS, самый дорогой товар и сумму цен всех товаров:
  2.  
  3. SELECT COUNT(*)
  4.  FROM CLIENTS;
  5.  
  6. SELECT MAX(PRICE)
  7.  FROM TOOLS;
  8.  
  9. SELECT SUM(PRICE)
  10.  FROM TOOLS;

По адресу
http://www.php.su/mysql/?commands
Только для Вас, эксклюзивно.

 

Powered by ExBB FM 1.0 RC1