我需要对代表文件系统结构的多维数组进行排序:
Array
(
[dir1] => Array
(
[dir2] => Array
(
[dir3] => Array
(
[dir4] => Array
(
[0] => file1.php
[1] => abc.php
)
)
[0] => file2.php
[1] => abc.php
)
)
[abc] => Array
(
[abc] => Array
(
[abc] => Array
(
[0] => file5.php
)
)
)
)
我不知道算法是什么。
将 mulsort 函数开头的 sort($a) 替换为 ksort($a)
编辑:抱歉,只需将 mulsort 代码更改为:
function mulsort(&$a)
{
ksort($a);
foreach($a as &$value)
if (is_array($value))
mulsort($value);
}
要对可变深度结构进行排序,请使用递归遍历所有级别。如果当前正在处理的目录是索引数组,则对值进行自然排序,否则对键进行自然排序。这将以逻辑且人性化的方式呈现您的目录和文件。
代码:(演示)
function sortFileSystem(array &$array)
{
foreach ($array as &$item) {
if (is_array($item)) {
(__FUNCTION__)($item);
}
}
if (array_is_list($array)) {
sort($array, SORT_NATURAL);
} else {
ksort($array, SORT_NATURAL);
}
}
sortFileSystem($array);
var_export($array);