Я пытаюсь вернуть каждый путь многомерного массива вместе с его хеш-значением.Я использовал это решение:
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
)
)
)
)
)
)
...