Слить массивы - массивов в один массив

207
11 мая 2018, 10:58

К примеру есть 2 массива:

Первый:

$one = [
    'key1' => [
        0 => '1',
        1 => '0',
    ],
    'key2' => [
        0 => '1',
        1 => '0',
    ],
    'key3' => [
        0 => '1',
        1 => '0',
    ]
];

Второй:

$thwo = [
    'array1' => [
        'key4' => [
            '1',
            '0'
        ],
        'key5' => [
            '1',
            '0'
        ],
        'key6' => [
            '1',
            '0'
        ]
    ]
];

В итоге, должно получиться так:

$total = [
    'key1' => [
        0 => '1',
        1 => '0',
    ],
    'key2' => [
        0 => '1',
        1 => '0',
    ],
    'key3' => [
        0 => '1',
        1 => '0',
    ],
    'key4' => [
        0 => '1',
        1 => '0',
    ],
    'key5' => [
        0 => '1',
        1 => '0',
    ],
    'key6' => [
        0 => '1',
        1 => '0',
    ]
];

Нужно учитывать, что могут быть разные массивы, разных вложенностей.
Не получается сделать рекурсию, никак не въеду как сделать.
Выручайте, кто, чем сможет.

Answer 1

Пришлось писать метод, который проверяет одномерный ли массив:

 public final function one(array $array): bool {
    $length = sizeof($array);
    if (1 == $length) {
        if (is_array(current($array))) {
            return false;
        } else {
            return true;
        }
    }
    $i = 0;
    foreach ($array as $value) {
        if (is_array($value)) {
          break;
        }
        ++$i;
    }
    return $i === $length;
}

И рекурсию:

private function recursive(array $array, $set) {
    if ($array) {
        foreach ($array as $key => $val) {
            if (is_array($val)) {
                if ($this->one($val)) {
                    self::$array[$key] = $val;
                } else {
                    $this->recursive($val, $set);
                }
            }
        }
    }
}

Работает только на php 7 +, внимательнее.

READ ALSO
Перекодировка текста в php

Перекодировка текста в php

Получаю файл с удаленного сервера с текстом, который отображается, как просто набор символов - Êðèâîíîñû;Ðàéîí Ñòàðîäîðîæñêèé, îáëÌèíñêàÿ;Áåëàðóñü

188
Использование шаблона в Laravel

Использование шаблона в Laravel

Подскажите как использовать шаблон в Laravel? К примеру, нужно чтобы меню было на всех страницахКуда кинуть код с этой менюшкой и где указать...

192
Создание приложения [требует правки]

Создание приложения [требует правки]

Всем привет! На каком языке можно сделать декстопную версию похожую на инстатул или тулиграм(http://andrey7-softru/, https://tooligram

182