Если я не ошибаюсь, одним из вариантов для ваших примеров данных может быть использование foreach
и проверка, заканчивается ли строка на /
Если это так, добавьте его в папку спустой массив и отметка текущего каталога.Если это не так, добавьте его в текущий каталог, используя в качестве ключа имя папки.
$my_arr = ['folder1/', 'file2.png', 'file3.png', 'file4.png', 'file5.png', 'folder2/', 'file1.png', 'file6.png'];
$result = [];
$folder = '';
foreach ($my_arr as $item) {
if (substr($item, -1) === '/') {
$folder = $item;
$result[$folder] = [];
continue;
}
$folder === '' ? $result[] = $item : $result[$folder][] = $item;
}
print_r($result);
Результат
Array
(
[folder1/] => Array
(
[0] => file2.png
[1] => file3.png
[2] => file4.png
[3] => file5.png
)
[folder2/] => Array
(
[0] => file1.png
[1] => file6.png
)
)