PHP数组排序 - 目录列表

时间:2017-09-07 11:16:59

标签: javascript php

我想使用这个数组示例创建一个目录列表,我想将它排序为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

3 个答案:

答案 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);

QUICK-TEST HERE

答案 2 :(得分:0)

如果你使用PHP方面,你可以按键/值对数组排序;但是如果你想使用Javascript,你必须创建一个例程,它将对一个对象而不是数组进行排序,因为JS没有使用键/值范例的数组。

所以要使用JS,你需要这样的东西:     $ sss =     {         '音乐':         {... (编辑删除无关文本)