Как массивы соединять между собой, если самые вложенные ключи одного являются самыми внешними ключами другого?

Получил массив, состоящий из массивов. В нем каждый следующий массив "уточняет" последние элементы в предыдущем. Например, у массива [0] есть элемент [2][2] ("5"), к которому нужно прицепить элемент [5] следующего массива [1]. Как их скрепить за соответствующие ключи один к другому, чтобы получился одни массив?

Array
(
    [0] => Array
        (
            [1] => Array
                (
                )

            [2] => Array
                (
                    [0] => 3
                    [1] => 4
                    [2] => 5
                )

            [6] => Array
                (
                    [0] => 7
                    [1] => 8
                    [2] => 9
                    [3] => 10
                )

        )

    [1] => Array
        (
            [3] => Array
                (
                )

            [4] => Array
                (
                )

            [5] => Array
                (
                    [0] => 11
                )

            [7] => Array
                (
                )

            [8] => Array
                (
                    [0] => 13
                )

            [9] => Array
                (
                )

            [10] => Array
                (
                )

        )

    [2] => Array
        (
            [11] => Array
                (
                    [0] => 12
                )

            [13] => Array
                (
                )

        )

    [3] => Array
        (
            [12] => Array
                (
                )

        )

)

Ответы (1 шт):

Автор решения: splash58

Пусть здесь пока полежит, подождем ответа автора вопроса

function trans($e, $arr, $next=1) {
    $r = [];
    if($arr[$next][$e]) {
        foreach($arr[$next][$e] as $y) {
            $r[$y] = trans($y, $arr, $next+1);
       }
    }
    return $r;
}

$res = [];
foreach($arr[0] as $k=>$v) {
    $res[$k] = [];
    foreach($v as $x) {
        $res[$k][$x] = trans($x, $arr);
    }
}


print_r($res);
→ Ссылка