Php 平面阵列到树阵列

Php 平面阵列到树阵列,php,arrays,Php,Arrays,我目前正忙于将数组“flat”修改为树的数组结构 我有一个类型为的数组: $folders = array( array('Name' => 'Archive', 'Value' => 'Archive', 'Attributes' => 32, 'Delimiters' => '/'), array('Name' => 'Folder1', 'Value' => 'Archive/Folder1', 'Attributes' => 32

我目前正忙于将数组“flat”修改为树的数组结构

我有一个类型为的数组:

$folders = array(
    array('Name' => 'Archive', 'Value' => 'Archive', 'Attributes' => 32, 'Delimiters' => '/'),
    array('Name' => 'Folder1', 'Value' => 'Archive/Folder1', 'Attributes' => 32, 'Delimiters' => '/'),
    array('Name' => 'FolderA', 'Value' => 'Archive/Folder1/DossierA', 'Attributes' => 64, 'Delimiters' => '/'),
    array('Name' => 'Folder2', 'Value' => 'Archive/Folder2', 'Attributes' => 32, 'Delimiters' => '/'),
    array('Name' => 'FolderA', 'Value' => 'Archive/Folder2/FolderA', 'Attributes' => 32, 'Delimiters' => '/'),
    array('Name' => 'FolderB', 'Value' => 'Archive/Folder2/FolderA/FolderB', 'Attributes' => 64, 'Delimiters' => '/'),
);
$treefolders = array(
    array('Name' => 'Archive', 'Value' => 'Archive', 'Attributes' => 32, 'Delimiters' => '/', 'subnode' => 
        array('Name' => 'Folder1', 'Value' => 'Archive/Folder1', 'Attributes' => 32, 'Delimiters' => '/', 'subnode' =>
            array('Name' => 'FolderA', 'Value' => 'Archive/Folder1/FolderA', 'Attributes' => 64, 'Delimiters' => '/')
        ),
        array('Name' => 'Folder2', 'Value' => 'Archive/Folder2', 'Attributes' => 32, 'Delimiters' => '/', 'subnode' => 
            array('Name' => 'FolderA', 'Value' => 'Archive/Folder2/FolderA', 'Attributes' => 32, 'Delimiters' => '/', 'subnode' =>
                array('Name' => 'FolderB', 'Value' => 'Archive/Folder2/FolderA/FolderB', 'Attributes' => 64, 'Delimiters' => '/')
            )
        )
    )
);
我会得到一个数组,类型如下:

$folders = array(
    array('Name' => 'Archive', 'Value' => 'Archive', 'Attributes' => 32, 'Delimiters' => '/'),
    array('Name' => 'Folder1', 'Value' => 'Archive/Folder1', 'Attributes' => 32, 'Delimiters' => '/'),
    array('Name' => 'FolderA', 'Value' => 'Archive/Folder1/DossierA', 'Attributes' => 64, 'Delimiters' => '/'),
    array('Name' => 'Folder2', 'Value' => 'Archive/Folder2', 'Attributes' => 32, 'Delimiters' => '/'),
    array('Name' => 'FolderA', 'Value' => 'Archive/Folder2/FolderA', 'Attributes' => 32, 'Delimiters' => '/'),
    array('Name' => 'FolderB', 'Value' => 'Archive/Folder2/FolderA/FolderB', 'Attributes' => 64, 'Delimiters' => '/'),
);
$treefolders = array(
    array('Name' => 'Archive', 'Value' => 'Archive', 'Attributes' => 32, 'Delimiters' => '/', 'subnode' => 
        array('Name' => 'Folder1', 'Value' => 'Archive/Folder1', 'Attributes' => 32, 'Delimiters' => '/', 'subnode' =>
            array('Name' => 'FolderA', 'Value' => 'Archive/Folder1/FolderA', 'Attributes' => 64, 'Delimiters' => '/')
        ),
        array('Name' => 'Folder2', 'Value' => 'Archive/Folder2', 'Attributes' => 32, 'Delimiters' => '/', 'subnode' => 
            array('Name' => 'FolderA', 'Value' => 'Archive/Folder2/FolderA', 'Attributes' => 32, 'Delimiters' => '/', 'subnode' =>
                array('Name' => 'FolderB', 'Value' => 'Archive/Folder2/FolderA/FolderB', 'Attributes' => 64, 'Delimiters' => '/')
            )
        )
    )
);
我不知道如何得出最后的结果


你能帮我吗?

这是不可能的,在PHP中数组不能用作数组键。您可以仅使用目录名作为密钥


最好的解决方案是改变创建阵列的方式,或者重新考虑代码和/或数据结构。你的问题可能有一个更简单的解决方案,也许可以重新问你的问题。请参阅。

抱歉,我在第一篇帖子中做了任何事情

下面是我的数组“flat”的结构:

我正在寻求:

Array
(
    [0] => 
        Array
        (
            'Name' => 'Archive'
            'Value' => 'Archive'
            'Attributes' => 32
            'Delimiters' => '/'
            'SubNode' =>
                Array
                (
                    [0] => 
                        Array
                        (
                            'Name' => 'Folder1'
                            'Value' => 'Archive/Folder1'
                            'Attributes' => 32
                            'Delimiters' => '/'
                            'SubNode' =>
                                Array
                                (
                                    [0] => 
                                        Array
                                        (
                                            'Name' => 'FolderA'
                                            'Value' => 'Archive/Folder1/DossierA'
                                            'Attributes' => 64
                                            'Delimiters' => '/'
                                        )    
                                )    
                        )    
                    [1] =>
                        Array
                        (
                            'Name' => 'Folder2'
                            'Value' => 'Archive/Folder2'
                            'Attributes' => 32
                            'Delimiters' => '/'
                            'SubNode' =>
                                Array
                                (
                                    [0] => 
                                        Array
                                        (
                                            'Name' => 'FolderA'
                                            'Value' => 'Archive/Folder2/FolderA'
                                            'Attributes' => 32
                                            'Delimiters' => '/'
                                            'SubNode' =>
                                                Array
                                                (
                                                    [0] => 
                                                        Array
                                                        (
                                                            'Name' => 'FolderB'
                                                            'Value' => 'Archive/Folder2/FolderA/FolderB'
                                                            'Attributes' => 64
                                                            'Delimiters' => '/'
                                                        )    
                                                )    
                                        )    
                                )    
                        )    
                )    
        )    
)
正常情况下,它应该是可能的^^