@yberpoc

Как объединить одинаковые данные элемента с одним отличающимся значением?

Приходит массив:
array (
    [14] => Array
        (
            [ID] => 562
            [NAME] => Борина Екатерина Николаевна
            [PREVIEW_PICTURE] => 
            [POSITION_TEXT] => Специалист направления Весовая электроника
            [PHONE_NUMBER] => +7 (342) 254-32-76
            [WORK_HOURS_TEXT] => Пн-Пт: с 9.00 до 19.00
            [POSITION_ID] => 1454
            [WORK_HOURS_ID] => 39493
            [PHONE_PROP_ID] => 1455
        )

    [15] => Array
        (
            [ID] => 573
            [NAME] => Артемова  Юля Вячеславовна
            [PREVIEW_PICTURE] => 
            [POSITION_TEXT] => Специалист направления Складские весы
            [PHONE_NUMBER] => +7 (342) 214-14-87
            [WORK_HOURS_TEXT] => Пн-Пт: с 9.00 до 19.00
            [POSITION_ID] => 1484
            [WORK_HOURS_ID] => 39503
            [PHONE_PROP_ID] => 39525
        )

    [16] => Array
        (
            [ID] => 573
            [NAME] => Артемова  Юля Вячеславовна
            [PREVIEW_PICTURE] => 
            [POSITION_TEXT] => Специалист направления Складские весы
            [PHONE_NUMBER] => +7 (342) 214-14-88
            [WORK_HOURS_TEXT] => Пн-Пт: с 9.00 до 19.00
            [POSITION_ID] => 1484
            [WORK_HOURS_ID] => 39503
            [PHONE_PROP_ID] => 39526
        )

    [17] => Array
        (
            [ID] => 573
            [NAME] => Артемова  Юля Вячеславовна
            [PREVIEW_PICTURE] => 
            [POSITION_TEXT] => Специалист направления Складские весы
            [PHONE_NUMBER] => +7 (342) 214-14-89
            [WORK_HOURS_TEXT] => Пн-Пт: с 9.00 до 19.00
            [POSITION_ID] => 1484
            [WORK_HOURS_ID] => 39503
            [PHONE_PROP_ID] => 39527
        )

)


Из него нужно сделать так:
array (
    [14] => Array
        (
            [ID] => 562
            [NAME] => Борина Екатерина Николаевна
            [PREVIEW_PICTURE] => 
            [POSITION_TEXT] => Специалист направления Весовая электроника
            [PHONE_NUMBER] => +7 (342) 254-32-76
            [WORK_HOURS_TEXT] => Пн-Пт: с 9.00 до 19.00
            [POSITION_ID] => 1454
            [WORK_HOURS_ID] => 39493
            [PHONE_PROP_ID] => 1455
        )

    [15] => Array
        (
            [ID] => 573
            [NAME] => Артемова  Юля Вячеславовна
            [PREVIEW_PICTURE] => 
            [POSITION_TEXT] => Специалист направления Складские весы
            [PHONE_NUMBER] => array(
                    [0] => +7 (342) 214-14-87
                    [1] => +7 (342) 214-14-88
                    [2] => +7 (342) 214-14-89
                )
            [WORK_HOURS_TEXT] => Пн-Пт: с 9.00 до 19.00
            [POSITION_ID] => 1484
            [WORK_HOURS_ID] => 39503
            [PHONE_PROP_ID] => 39525
        )
)


Нужно всё это сделать в одном цикле
  • Вопрос задан
  • 45 просмотров
Пригласить эксперта
Ответы на вопрос 1
pLavrenov
@pLavrenov
Разработка сайтов
foreach ($list as $item)
{
    if ($arList[$item["ID"]])
    {
        $arNums[] = $item["PHONE_NUMBER"];
        $arList[$item["ID"]]["PHONE_NUMBER"] = $arNums;
        continue;
    }
    $arList[$item["ID"]] = $item;
}


Опишу логику.
1) Нужно вставить Else чтобы было так: если в итогом массиве есть Итем с таким ID то добавляем в этот Итем (в итоговом массиве) телефон, если нет то добавляем в итоговый массив новый итем целиком.
(сейчас получается что если ИД есть то добавлем в него телефон, и всеравно вставляем в конец массива этот Итем)
2) $arNums[] = $item["PHONE_NUMBER"]; можно проследить что это вообще балласт и не используется
3) На всякий случай добавить проверку есть ли в Итеме итогового массива такой номер телефона и если нет то добавляем, как проверить
4) continue - читаем документация, он тут вообще не к месту.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы