首页 > 解决方案 > PHP对无穷数组进行排序并保留索引字符串

问题描述

我想对多维数组(我不知道长度)进行排序并保留索引字符串。这个多维数组的数据来自一个可以有无限文件夹和文件的目录。

我已经成功地将文件夹结构抓取到一个数组中,使用这个List the all files and folder in a Directory with PHP recursive function,我可以使用这样的递归函数对数组进行排序https://stackoverflow.com/a/4501406/3355243 .

问题

排序时,所有数组索引都替换为数字。我想将数组索引保留为字符串,因为它包含文件夹名称。

输入

Folder A => Array
(
    file.php,
    file1.php,
    Folder B => Array 
    (
        file.php,
        file1.php, 
        Folder A => Array 
        (
            file.php,
            file1.php, 
        )
        something.php
    ),
    something.php
),
Folder B => Array 
(
    other.php,
    other2.php 
),
Folder C => Array 
(
    Folder A => Array 
    (
        a.php,
        b.php
    ),
    something.php
)

预期产出

Folder A => Array
(
    file.php,
    file1.php,
    something.php,
    Folder B => Array 
    (
        file.php,
        file1.php, 
        something.php,
        Folder A => Array 
        (
            file.php,
            file1.php, 
        )       
    ),  
),
Folder B => Array 
(
    other.php,
    other2.php 
),
Folder C => Array 
(
    something.php
    Folder A => Array 
    (
        a.php,
        b.php
    ),  
)

电流输出

0 => Array
(
    file.php,
    file1.php,
    something.php,
    0 => Array 
    (
        file.php,
        file1.php, 
        something.php,
        0 => Array 
        (
            file.php,
            file1.php, 
        )       
    ),  
),
1 => Array 
(
    other.php,
    other2.php 
),
2 => Array 
(
    something.php
    0 => Array 
    (
        a.php,
        b.php
    ),  
)

最终目标

将数组/文件夹结构显示到带有组和选项的选择框中。

在此处输入图像描述

标签: phparrays

解决方案


解决了

链接Order multidimensional array recursively at each level in PHP的解决方案用于ksort对数组和解决方案进行排序,在我的情况下,我不得不使用asort.

https://www.php.net/manual/en/function.asort.php

asort — 对数组进行排序并保持索引关联


推荐阅读