如何使用值将单个数组转换为多维数组?

时间:2019-07-03 18:26:45

标签: php arrays multidimensional-array

说我有一个数组:

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

我想创建一个按文件夹分类的多维数组。由于它不是一个关联数组,因此我很难找到一种将其拆分为文件夹值并将文件输入到同一数组中的方法。

对不起,如果这没有道理,我是PHP新手,到目前为止还没有找到任何内容。

1 个答案:

答案 0 :(得分:0)

如果我没记错的话,示例数据的一种选择是使用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
        )

)