【问题标题】:PHP Array Sorting - Directory listPHP 数组排序 - 目录列表
【发布时间】:2017-09-07 11:16:59
【问题描述】:

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

【问题讨论】:

标签: javascript php


【解决方案1】:

假设你的数组被称为 $a,这应该可以工作。

foreach ($a as $key => $row) {
    $type[$key] = $row['type'];
}

array_multisort($type, SORT_DESC, $a);

var_dump($a);

【讨论】:

    【解决方案2】:

    如果您认为可以使用 PHP 解决方案,为什么不尝试使用 PHP 的 uksort() 函数呢? 方法如下:

    给定数组:

    <?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

    【讨论】:

    • 什么是$sss?你在哪里说你按类型排序?
    • @inetphantom 人们会非常欣赏一种主动的方法,它直接指出一些看起来很奇怪的东西,而不是这种过时的 WHAT ISWHERE...只会给原本显而易见的简单性增加更多复杂性的问题......顺便说一句:不要像 A 或 B 先生那样学习写作......一点真实性会更有创意& 亲INETPHANTOM ....
    【解决方案3】:

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

    因此,要使用 JS,您将需要以下内容: $sss = { '音乐': { ... (编辑删除无关文本)

    【讨论】:

      猜你喜欢
      • 2013-07-12
      • 2013-09-25
      • 2015-04-27
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 2017-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多