Как превратить один массив в многомерный массив, используя значения? - PullRequest
1 голос
/ 03 июля 2019

Скажите, у меня есть массив:

$my_arr = ['folder1/', 'file2.png', 'file3.png', 'file4.png', 'file5.png', 'folder2/', 'file1.png', 'file6.png'];

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

Извините, если это не имеет смысла, я новичок в PHP и пока не нашел в нем ничего.

1 Ответ

0 голосов
/ 03 июля 2019

Если я не ошибаюсь, одним из вариантов для ваших примеров данных может быть использование 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
        )

)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...