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 :: Версия для печати :: Помогите свернуть массив
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Помогите свернуть массив

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

1. svteh - 14 Июля, 2014 - 17:41:17 - перейти к сообщению
Это наверное не так трудно, но я с 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 ) ) )
2. svteh - 16 Июля, 2014 - 15:15:01 - перейти к сообщению
Вопрос еще очень актуален.
очень прошу - ПОМОГИТЕ!
3. Sail - 16 Июля, 2014 - 16:04:03 - перейти к сообщению
Например, так:
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.  
4. svteh - 17 Июля, 2014 - 14:34:47 - перейти к сообщению
Sail, получилось!!

Огромное СПАСИБО!

 

Powered by ExBB FM 1.0 RC1