Как вернуть каждый путь и его хэш из многомерного массива?

Я пытаюсь вернуть каждый путь многомерного массива вместе с его хеш-значением. Я использовал это решение:

function newMethod($tree) {
$hash = "";
$final = array();
    foreach ($tree as $key => &$mixed) {
        if (is_array($mixed) || is_object($mixed)) {
            $results = newMethod($mixed);
                foreach ($results as $k => &$v) {
                    $hash = md5($key . $v);
                        if (is_array($mixed)) {
                            $final[][$hash] = array($key => $v);
                        }
                        elseif (is_object($mixed)) {
                            $final[][$hash] = array($key => (object)$v);
                        }
                } 
            unset($results);
        } else {
            $hash = md5($key. $mixed);
            $final[][$hash] = array($key => $mixed); 
        }
    }
return $final;
}

Использование этой функции предоставляет значение хеш-функции для каждого участка пути отдельно и не связывает их вместе. Как я могу изменить это решение, чтобы получить такой вывод:

Array
(
    [0] => Array
    (
        [Hash of first path] => Array
        (
            [a] => b
        )
    )
    [1] => Array
    (
        [Hash of second path] => Array
        (
            [c] => stdClass Object
            (
                [d] => Array
                    (
                        [1] => 11
                    )
            )

        )

    )
)
...

Простое дерево и часть вывода выглядят следующим образом:

$new = [
    'a' => 'b',
    'c' => (object)[
        'd' => [1 => 11, 2 => 12],
        'f' => 'Hello',
    ],
];
//output
[0] => Array
    (
        [187ef4436122d1cc2f40dc2b92f0eba0] => Array
            (
                [a] => b
            )

    )

[1] => Array
    (
        [595448f796fd1d2d5f192949d79ba9df] => Array
            (
                [c] => stdClass Object
                    (
                        [f801394efb8c6ca75f1ab6a639556520] => Array
                            (
                                [d] => Array
                                    (
                                        [698d51a19d8a121ce581499d7b701668] => Array
                                            (
                                                [1] => 11
                                            )

                                    )

                            )

                    )

            )

    )
...

Можешь выложить дерево?

Ussaid Iqbal 19.01.2019 10:41

Можете ли вы добавить данные в свой желаемый вывод? должен ли «первый путь» быть строкой как "a->b"?

dWinder 22.01.2019 14:46
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
46
0

Другие вопросы по теме