我递归地读取了一个文件夹,得到了一个这样的多维数组:
Array
(
[folder1] => Array
(
[sub-folder1] => Array
(
[0] => sub-folder-1-file1.xx
[1] => sub-folder-1-file2.xx
[2] => sub-folder-1-file3.xx
)
[0] => folder-1-file1.xx
[1] => folder-1-file2.xx
[2] => folder-1-file3.xx
[3] => folder-1-file4.xx
[sub-folder2] => Array
(
[0] => sub-folder-2-file1.xx
[1] => sub-folder-2-file1.xx
)
...
我想像一样分类
(
[folder1] => Array
(
[0] => folder-1-file1.xx
[1] => folder-1-file2.xx
[2] => folder-1-file3.xx
[3] => folder-1-file4.xx
[sub-folder1] => Array
(
[0] => sub-folder-1-file1.xx
[1] => sub-folder-1-file2.xx
[2] => sub-folder-1-file3.xx
)
[sub-folder2] => Array
(
[0] => sub-folder-2-file1.xx
[1] => sub-folder-2-file1.xx
)
就像我们按类型而不是简单地按名称列出一样。
我想我必须使用usort,但我无法正确理解:这是我的作品:
usort($array, function($a, $b){
if ( (is_array($a) && is_array($b)) || (!is_array($a) && !is_array($b)) )
return 0;
if ( is_array($a) )
return -1;
return 1;
});
任何帮助都将不胜感激。谢谢
我这样解决:
foreach ($array as $key => $value)
{
ksort($array[$key], SORT_STRING);
}
您可以使用ksort()
函数并传递所需的排序类型作为第二个参数。
假设你的数组名称是$test
,那么你需要这样的东西:
ksort($test['folder1'], SORT_STRING); //SORT_STRING compares items as strings
如果你做
echo '<pre>',print_r($test,1),'</pre>';
你将能够看到你想要的结果。