Как получить нужный массив данных на PHP?

Рейтинг: 0Ответов: 1Опубликовано: 03.03.2015

Здравствуйте!

Имеется проблема. Есть масссив данных, который состоит из двух массивов. Нужно произвести манипуляции по склеиванию некоторых элементов.

Чтобы было понятнее, приведу пример:

[0] => Array
        (
            [0] => Array
                (
                    [ID] => 2901
                    [ID_USER] => 2899
                    [CONFIG] => LowConfig
                )

            [1] => Array
                (
                    [ID] => 11539
                    [ID_USER] => 2899
                    [CONFIG] => LowConfig
                )
            )

    [1] => Array
        (
            [0] => Array
                (
                    [ID] => 2901
                    [ID_USER] => 2899
                    [CONFIG] => MediumConfig
                )

            [1] => Array
                (
                    [ID] => 11580
                    [ID_USER] => 2899
                    [CONFIG] => LowConfig

                )

        )

На выходе должен получится следующий массив:

[0] => Array
            (
                [0] => Array
                    (
                        [ID] => 2901
                        [ID_USER] => 2899
                        [CONFIG] => LowConfig
                    )

                [1] => Array
                    (
                        [ID] => 11539
                        [ID_USER] => 2899
                        [CONFIG] => LowConfig
                    )
               [2] => Array
                    (
                        [ID] => 11580
                        [ID_USER] => 2899
                        [CONFIG] => LowConfig

                    )
          )

Фактически Array[n][0][n] является главным элементом, по которому идет сравнение каждой пары. Как можно реализовать алгоритм, чтобы получился на выходе мой пример?

Ответы

▲ 1Принят

Необходимо ID подставить вместо ключа массива. Далее, merge по ключу.

function index(array $array, $key) {
    $result = array();
    foreach ($array as $element) {
        $value = $element[$key];
        $result[$value] = $element;
    }

    return $result;
}

$result = index($array1, 'ID') + index($array2, 'ID');

Смотрите результат.

Если данные приходят из БД, то, возможно, ваша ORM позволяет это делать. К примеру, в Yii2 AR, это indexBy().