我想使用这个数组示例创建一个目录列表,我想将它排序为2列排序,文件名ASC和类型DESC。目前我只使用javascript将此目录排序为文件名ASC。
有人有更好的想法怎么做吗? Php数组排序或javascript。
非常感谢你的帮助!
Array
(
[Music] => Array
(
[size] => 4096
[mode] => 16877
[type] => 2
[atime] => 1503581347
[mtime] => 1504775242
[filename] => Music
)
[Videos] => Array
(
[size] => 4096
[mode] => 16877
[type] => 2
[atime] => 1501249251
[mtime] => 1502733819
[filename] => Videos
)
[Desktop] => Array
(
[size] => 4096
[mode] => 16877
[type] => 2
[atime] => 1501249251
[mtime] => 1502733819
[filename] => Desktop
)
[file.zip] => Array
(
[size] => 5084312
[mode] => 33188
[type] => 1
[atime] => 1504773615
[mtime] => 1504773620
[filename] => file.zip
)
预期输出:
FILENAME | TYPE
Desktop | 2
Music | 2
Videos | 2
file.zip | 1
答案 0 :(得分:1)
假设您的数组名为$ a,这应该可以。
foreach ($a as $key => $row) {
$type[$key] = $row['type'];
}
array_multisort($type, SORT_DESC, $a);
var_dump($a);
答案 1 :(得分:0)
如果您认为可以使用PHP解决方案,为什么不尝试使用PHP的uksort()
函数?
以下是:
GIVEN ARRAY:
<?php
$arr = array
(
'Music' => array
(
'size' => 4096,
'mode' => 16877,
'type' => 2,
'atime' => 1503581347,
'mtime' => 1504775242,
'filename' => 'Music',
),
'Videos' => array
(
'size' => 4096,
'mode' => 16877,
'type' => 2,
'atime' => 1501249251,
'mtime' => 1502733819,
'filename' => 'Videos',
),
'Desktop' => array
(
'size' => 4096,
'mode' => 16877,
'type' => 2,
'atime' => 1501249251,
'mtime' => 1502733819,
'filename' => 'Desktop',
),
'file.zip' => array
(
'size' => 5084312,
'mode' => 33188,
'type' => 1,
'atime' => 1504773615,
'mtime' => 1504773620,
'filename' => 'file.zip',
)
);
简单可比的比较功能:
<?php
function compare($a, $b){
return $a > $b;
}
uksort($arr, 'compare');
var_dump($arr);
答案 2 :(得分:0)
如果你使用PHP方面,你可以按键/值对数组排序;但是如果你想使用Javascript,你必须创建一个例程,它将对一个对象而不是数组进行排序,因为JS没有使用键/值范例的数组。
所以要使用JS,你需要这样的东西: $ sss = { '音乐': {... (编辑删除无关文本)