PHP高级多维数组排序
我递归读取一个文件夹,得到一个多维数组,如下所示:PHP高级多维数组排序,php,sorting,multidimensional-array,Php,Sorting,Multidimensional Array,我递归读取一个文件夹,得到一个多维数组,如下所示: Array ( [folder1] => Array ( [sub-folder1] => Array ( [0] => sub-folder-1-file1.xx [1] => sub-folder-1-file2.xx [2] =&g
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
)
...
ksort($test['folder1'], SORT_STRING); //SORT_STRING compares items as strings
我想把它分类
(
[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
,则需要如下内容:
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
)
...
ksort($test['folder1'], SORT_STRING); //SORT_STRING compares items as strings
如果你做了一个
echo '<pre>',print_r($test,1),'</pre>';
echo'',打印($test,1),'';
您将能够看到所需的结果。请改用ksort()。