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]   

> Без описания
svteh
Отправлено: 14 Июля, 2014 - 17:41:17
Post Id


Новичок


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


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




Это наверное не так трудно, но я с php только знакомлюсь, поэтому прошу, помогите!

Надо суммировать значения полей pn и pk для одинаковых значений поля sv

то есть из массива

PHP:
скопировать код в буфер обмена
  1. Array (         [0] => Array ( [pn] => 4 [sv] => name1 [pk] => 4 )
  2.                 [1] => Array ( [pn] => 0 [sv] => name1 [pk] => 3 )
  3.                 [2] => Array ( [pn] => 5 [sv] => name2 [pk] => 2 ) ) )


получить массив

PHP:
скопировать код в буфер обмена
  1. Array (         [0] => Array ( [pn] => 4 [sv] => name1 [pk] => 7 )                                     
  2.                 [2] => Array ( [pn] => 5 [sv] => name2 [pk] => 2 ) ) )

(Отредактировано автором: 16 Июля, 2014 - 15:16:27)

 
 Top
svteh
Отправлено: 16 Июля, 2014 - 15:15:01
Post Id


Новичок


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


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




Вопрос еще очень актуален.
очень прошу - ПОМОГИТЕ!
 
 Top
Sail
Отправлено: 16 Июля, 2014 - 16:04:03
Post Id



Участник


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


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




Например, так:
PHP:
скопировать код в буфер обмена
  1.         $arr1 = array(
  2.               0 => array('pn' => 4, 'sv' => 'name1', 'pk' => 4)
  3.             , 1 => array('pn' => 0, 'sv' => 'name1', 'pk' => 3)
  4.             , 2 => array('pn' => 3, 'sv' => 'name2', 'pk' => 2)
  5.             , 3 => array('pn' => 5, 'sv' => 'name2', 'pk' => 2)
  6.             , 4 => array('pn' => 2, 'sv' => 'name3', 'pk' => 3)
  7.             , 5 => array('pn' => 6, 'sv' => 'name3', 'pk' => 4)
  8.             );
  9.        
  10.         $arr = array();
  11.         $arrIdx = array();
  12.         foreach($arr1 as $key => $value) {
  13.             $sName = $value['sv'];
  14.             if(array_key_exists($sName, $arrIdx)) {
  15.                 $idx = $arrIdx[$sName];
  16.                 $arr[$idx]['pn'] += $value['pn'];
  17.                 $arr[$idx]['pk'] += $value['pk'];
  18.             } else {
  19.                 $arrIdx[$sName] = $key;
  20.                 $arr[$key] = $value;
  21.             }
  22.         }
  23.         var_dump($arr1, $arr);
  24.  
 
 Top
svteh
Отправлено: 17 Июля, 2014 - 14:34:47
Post Id


Новичок


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


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




Sail, получилось!!

Огромное СПАСИБО!
 
 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