Объединение json элементов
Получаю с БД данные в следующем виде
[{"category":"Приемы специалистов","price":["1002","1003","637"]},{"category":"Инструментальные методы исследования","price":["990"]},{"category":"Лабораторные исследования","price":["975","685","686","1006","1007","678","1011"]},{"category":"Процедуры","price":["971"]}]
[{"category":"Приемы специалистов","price":["51","50"]},{"category":"Инструментальные методы исследований","price":["466","267"]},{"category":"Лабораторные исследования","price":["844","689","1023","1024","725","678"]},{"category":"Процедуры","price":["630"]}]
Как правильно объеденить такого рода строки с ожидаемым результатом:
[{"category":"Приемы специалистов","price":["1002","1003","637","51","50"]},{"category":"Инструментальные методы исследования","price":["990","466","267"]},{"category":"Лабораторные исследования","price":["975","685","686","1006","1007","678","1011","844","689","1023","1024","725","678"]},{"category":"Процедуры","price":["971","630"]}]
Ответы (1 шт):
Автор решения: Slava Rozhnev
→ Ссылка
Ниже один из вариантов решения:
<?php
$json1 = '[{"category":"Приемы специалистов","price":["1002","1003","637"]},{"category":"Инструментальные методы исследования","price":["990"]},{"category":"Лабораторные исследования","price":["975","685","686","1006","1007","678","1011"]},{"category":"Процедуры","price":["971"]}]';
$json2 = '[{"category":"Приемы специалистов","price":["51","50"]},{"category":"Инструментальные методы исследований","price":["466","267"]},{"category":"Лабораторные исследования","price":["844","689","1023","1024","725","678"]},{"category":"Процедуры","price":["630"]}]' ;
# convert first JSON string to PHP array
$result = json_decode($json1, true);
#var_dump($result);
# loop trough second JSON
foreach (json_decode($json2, true) as $cat) {
foreach ($result as &$res_cat) {
$added = false;
if ($cat['category'] == $res_cat['category']) {
# in case category already exists - merge prices
$res_cat['price'] = array_merge($res_cat['price'], $cat['price']);
$added = true;
break;
}
}
if (!$added) {
# add category that have not merged before
array_push($result, $cat);
}
}
var_dump($result);
Вы можете проверить и/или изменить код здесь PHPize.online