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 :: Сложение значений 2-ух массивов

 PHP.SU

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


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

> Без описания
arimanecro
Отправлено: 16 Июня, 2015 - 11:21:16
Post Id



Частый гость


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


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




Ломаю голову 2 дня, все никак не соображу, как сделать... Ниндзя

PHP:
скопировать код в буфер обмена
  1. $a = array('34' => 30, '16' => 16);
  2. $b = array(50, 26);
  3.  
  4. foreach ($a as $v) {
  5.         foreach($b as $value) {
  6.                 echo $v + $value.'<br>';
  7.         }
  8. }


Выдаст:
80
56
66
42

нужно, чтобы выдавало только 80 и 56.
П.с -- не предлагать сделать одинаковые ключи массивов )
 
 Top
Sail
Отправлено: 16 Июня, 2015 - 11:24:00
Post Id



Участник


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


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




arimanecro пишет:
нужно, чтобы выдавало только 80 и 56.

PHP:
скопировать код в буфер обмена
  1. $v = reset($a);
  2. foreach($b as $value) {
  3.         echo $v + $value.'<br>';
  4. }
  5.  
 
 Top
Tyoma5891
Отправлено: 16 Июня, 2015 - 11:33:18
Post Id


Частый посетитель


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


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




Цитата:
нужно, чтобы выдавало только 80 и 56.

если честно непонятно по какому принципу идет сложение)
 
 Top
arimanecro
Отправлено: 16 Июня, 2015 - 11:38:15
Post Id



Частый гость


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


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




Sail

благодарчик за быстрый и точный ответ Поклон
===========
если не сложно, то поясните...

Цитата:
reset — Устанавливает внутренний указатель массива на его первый элемент


до того момента когда запускается foreach в переменной $v находится значение 30.

Почему в цикле, происходит "переключение" с 30 на 16???

(Отредактировано автором: 16 Июня, 2015 - 11:38:53)

 
 Top
Sail
Отправлено: 16 Июня, 2015 - 11:44:25
Post Id



Участник


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


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




arimanecro пишет:
до того момента когда запускается foreach в переменной $v находится значение 30.

Почему в цикле, происходит "переключение" с 30 на 16???

Где происходит? В первом сообщении? Если да, то на то он и цикл обхода массива $a.
Если в предложенном мной варианте, то - не происходит.
 
 Top
arimanecro
Отправлено: 16 Июня, 2015 - 11:55:55
Post Id



Частый гость


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


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




Sail пишет:
Если в предложенном мной варианте, то - не происходит.


да, в Вашем.
==========

Извиняюсь, я в первом посте неправильно сформулировал вопрос....

Нужно, чтобы значения массива $b сложились со значениями массива $a и в массива $b запомнились уже измененные после сложения значения, то есть var_dump($b) должен выдать 80(30+50) и 42(26+16)
понимаю, что нужно через ссылку все это делать...но опять же, ничего не выходит Недовольство, огорчение
======
Tyoma5891

по такому принципу: первый элемент первого массива складывается с первым элементом второго массива итд

(Отредактировано автором: 16 Июня, 2015 - 11:57:38)

 
 Top
LIME
Отправлено: 16 Июня, 2015 - 12:03:39
Post Id


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


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


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




Итерируй вручную
Не через цикл
Через фцию http://php.net/manual/ru/function.next.php
 
 Top
Sail
Отправлено: 16 Июня, 2015 - 12:04:04
Post Id



Участник


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


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




arimanecro пишет:
Нужно, чтобы значения массива $b сложились со значениями массива $a и в массива $b запомнились уже измененные после сложения значения, то есть var_dump($b) должен выдать 80(30+50) и 42(26+16)

PHP:
скопировать код в буфер обмена
  1. $arr = array_map(function($a, $b){ return $a + $b;}, $a, $b);
  2. var_dump($arr);

(Добавление)
Предварительно убедившись, конечно-ж одинаковости длин массивов...
(Добавление)
А после уже $b = $arr; ну, или сразу $b = array_map()...
 
 Top
LIME
Отправлено: 16 Июня, 2015 - 12:22:20
Post Id


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


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


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




Я бы завалил на собеседованииУлыбка
(Добавление)
Хотя маппинг же блин
Вот я дундук
 
 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