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]   

> Без описания
CTAPu4OK
Отправлено: 11 Июля, 2012 - 20:59:07
Post Id



Гость


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


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




Добрый вечер всем, тут впал в ступр, голова совсем не работает)

Я получаю два массива (какие они буду я не знаю) мне нужно сверить ключи и если они равны, сложить значения.

например:

получаю в функцию два массива:
Array ( [damage] => 5 )
Array ( [damage] => 2 [vitality] => 5 )

мне надо получить на выходе

Array ( [damage] => 7 [vitality] => 5 )

Подайте идею))
 
 Top
armancho7777777 Супермодератор
Отправлено: 11 Июля, 2012 - 21:34:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


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




CTAPu4OK пишет:
Подайте идею))

PHP:
скопировать код в буфер обмена
  1.  
  2. function array_custom_merge($arr1, $arr2)
  3. {
  4.         $newArr = $arr1;
  5.        
  6.         foreach($arr2 as $k => $v)
  7.         {
  8.                 if(isset($newArr[$k]))
  9.                 $newArr[$k] += $v;
  10.                 else
  11.                 $newArr[$k] = $v;
  12.         }
  13.        
  14.         return $newArr;
  15. }
  16.  
  17.  
  18. $arr1 = array('damage' => 5);
  19. $arr2 = array('damage' => 2, 'vitality' => 5);
  20.  
  21. print_r(array_custom_merge($arr1, $arr2));
  22.  

(Отредактировано автором: 11 Июля, 2012 - 21:46:35)

 
 Top
CTAPu4OK
Отправлено: 11 Июля, 2012 - 22:01:10
Post Id



Гость


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. function array_custom_merge($arr1, $arr2)
  3. {
  4.         $newArr = $arr1;
  5.        
  6.         foreach($arr2 as $k => $v)
  7.         {
  8.                 if(isset($newArr[$k]))
  9.                 $newArr[$k] += $v;
  10.                 else
  11.                 $newArr[$k] = $v;
  12.         }
  13.        
  14.         return $newArr;
  15. }
  16.  
  17.  
  18. $arr1 = array('damage' => 5);
  19. $arr2 = array('damage' => 2, 'vitality' => 5);
  20.  
  21. print_r(array_custom_merge($arr1, $arr2));
  22.  


я так пробовал... а если arr1 будет длиннее arr2 ?) то некоторые значения отсеются) например попадет массив
$arr1 = array('vitality' => 5, 'damage' => 2);
$arr2 = array('damage' => 5);

(Отредактировано автором: 11 Июля, 2012 - 22:02:04)

 
 Top
armancho7777777 Супермодератор
Отправлено: 11 Июля, 2012 - 23:51:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


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




CTAPu4OK пишет:
а если arr1 будет длиннее arr2

И что?
Проверить-то не судьба?
CTAPu4OK пишет:
то некоторые значения отсеются)

Вы работаете с PHP с 2008 года как минимум и не в силах разобрать тривиальный пример.
Функция работает должным образом в соответствии поставленной задачей выше.
(Добавление)
В любом случае вернёт то, что Вам надо:
CTAPu4OK пишет:
Array ( [damage] => 7 [vitality] => 5 )
 
 Top
CTAPu4OK
Отправлено: 12 Июля, 2012 - 21:24:37
Post Id



Гость


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


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




armancho7777777 пишет:
CTAPu4OK пишет:
а если arr1 будет длиннее arr2

И что?
Проверить-то не судьба?
CTAPu4OK пишет:
то некоторые значения отсеются)

Вы работаете с PHP с 2008 года как минимум и не в силах разобрать тривиальный пример.
Функция работает должным образом в соответствии поставленной задачей выше.
(Добавление)
В любом случае вернёт то, что Вам надо:
CTAPu4OK пишет:
Array ( [damage] => 7 [vitality] => 5 )


Действительно, тупанул маленько, спасибо)
 
 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