У меня проблема с объединением массивов по определенному сценарию. Поиск похожих случаев здесь не дал результатов. Чтобы четко понять, каковы мои требования, посмотрите на следующий пример:
Первый массив:
Array
(
[0] => stdClass
(
[call_date] => 2013-10-22 00:00:00
[first_amount] => 10
)
[1] => stdClass
(
[call_date] => 2013-10-23 00:00:00
[first_amount] => 20
)
)
Второй массив:
Array
(
[0] => stdClass
(
[call_date] => 2013-10-22 00:00:00
[second_amount] => 30
)
[1] => stdClass
(
[call_date] => 2013-10-24 00:00:00
[second_amount] => 40
)
)
Что мне нужно на выходе:
Array
(
[0] => stdClass
(
[call_date] => 2013-10-22 00:00:00
[first_amount] => 10
[second_amount] => 30
)
[1] => stdClass
(
[call_date] => 2013-10-23 00:00:00
[first_amount] => 20
)
[2] => stdClass
(
[call_date] => 2013-10-24 00:00:00
[second_amount] => 40
)
)
Итак, как вы видите, слияние происходит по call_date. Элементы из первого и второго массива, находящиеся под датой 2013-10-22 00:00:00, были объединены, элемент из второго массива под датой 2013-10-24 00:00:00 был добавлен.
Перепробовал множество комбинаций array_merge, array_udiff, array_merge_recursive, array_map, но ничего не помогло :(.
Будем признательны за решение этой проблемы!
foreach
с использованиемcall_date
в качестве ключа нового массива, если элемент не существует, добавьте, если он есть, добавьте столбец*_amount
(или просто$newarray[$item->call_date] = (object)array_merge(get_object_vars($newarray[$item->call_date]),get_object_vars($item));
(вы говорите о слиянии object здесь. - person Wrikken   schedule 29.10.2013foreach($array1 as $item){..}foreach($array2 as $item){..}
и т. д.) - person Wrikken   schedule 29.10.2013