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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сложение значений ассоциативного массива

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
XuPoH
Отправлено: 03 Января, 2015 - 08:13:28
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Март 2014  


Помог: 0 раз(а)




Всем ку, нужна помощь
Есть массив вида
["2014-01-02" => "30",
"2014-01-02"=>"10",
"2014-01-03"=>"2"
]
Это заработок сайта в день, менять вид массива нельзя, таково API на сайте заказчика, я делаю что-то вроде статистики для админпанели.
Мне этот вид массива нужно привести в вид
[
"2014-01-02"=>"40","2014-01-03"=>"2"
]
Т.е. найти повторяющиеся ключи, сложить их значения в один ключ. Порядок не важен, это всего лишь данные, по которым строится график.
Прошу руки помощи)) Радость Радость
 
 Top
Wooorker
Отправлено: 04 Января, 2015 - 18:33:56
Post Id



Гость


Покинул форум
Сообщений всего: 99
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




XuPoH пишет:
Всем ку, нужна помощь
Есть массив вида
["2014-01-02" => "30",
"2014-01-02"=>"10",
"2014-01-03"=>"2"
]

Сдаётся мне, что это не массив, т. к. не может быть в массиве 2 ключей с одним именем.
Если это таблица в mysql, то там просто сделать запрос с SUM(заработок) GROUP BY (дата).
Но, если всё же с массивами баловаться, то будет так:
PHP:
скопировать код в буфер обмена
  1.             $arr1=array(array("2014-01-02"=>"30"),array("2014-01-02"=>"10"),array("2014-01-03"=>"2"));
  2.             $arr2=array();
  3.             foreach($arr1 as $arr_key=>$arr_value){
  4.                 foreach($arr_value as $key1=>$value1) {
  5.                     $value = $value1;
  6.                     foreach($arr2 as $key2=>$value2){
  7.                         if ($key2==$key1) {
  8.                             $value = $value + $value2;
  9.                         }
  10.                     }
  11.                     $arr2[$key1]=$value;
  12.                 }
  13.             }
  14.             print_r($arr1);
  15.             echo '<br>';
  16.             print_r($arr2);


Результат
CODE (html):
скопировать код в буфер обмена
  1. Array ( [0] => Array ( [2014-01-02] => 30 ) [1] => Array ( [2014-01-02] => 10 ) [2] => Array ( [2014-01-03] => 2 ) )
  2. Array ( [2014-01-02] => 40 [2014-01-03] => 2 )

(Отредактировано автором: 04 Января, 2015 - 18:35:01)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB