Мне нравится, чтобы структура данных была максимально простой.Также работать с большими вложенными массивами всегда сложно.
Я бы предложил изменить формат переменной $ finalResult на следующий (используя некую древовидную структуру без многомерного массива):
$finalResult = [
"1" => "value1",
"1.2" => "value2",
"1.2.3" => "value3",
"1.2.3.4" => "value4"
];
В этом случае ключ массива «1» является уникальным идентификатором, а путь к родительскому элементу 1.
Ключ массива «1.2» является уникальным путем к родительскому файлу 2, «2» - это идентификатор родительского объекта 2.
массивключ «1.2.3» - это уникальный путь родителя3, «3» - это идентификатор родителя 3.
Ключ массива «1.2.3.4» - это уникальный путь родителя4, «4» - это идентификатор родителя4.
и так далее ...
В этом случае вы можете просто обращаться к элементам, вы можете сортировать массив по ключам.
И f.ex.Ключ массива "1.2.3.4" показывает, что это parent4 с идентификатором "4" и он является потомком родителей с идентификаторами "1", "2" и "3"
В ключе массива "1.2.3.4"последнее число после последней точки является уникальным идентификатором, все до последней точки показывают идентификаторы всех родителей.