【问题标题】:i want to sort an array in php [duplicate]我想在php中对数组进行排序[重复]
【发布时间】:2019-10-19 15:46:23
【问题描述】:
Array
(
    [0] => Array
        (
            [count] => 9
            [slug] => concediat-reangajat
        )

    [1] => Array
        (
            [count] => 7
            [slug] => salarii-5togo
        )

    [2] => Array
        (
            [count] => 10
            [slug] => piata-fortei-munca
        )

    [3] => Array
        (
            [count] => 3
            [slug] => productivitate-angajati
        )

    [4] => Array
        (
            [count] => 1
            [slug] => stocare-date
        )

    [5] => Array
        (
            [count] => 4
            [slug] => infrastructura-leadership
        )

    [6] => Array
        (
            [count] => 2
            [slug] => airbnb-uber
        )

    [7] => Array
        (
            [count] => 5
            [slug] => salarii-productivitate
        )

    [8] => Array
        (
            [count] => 2
            [slug] => ceo-resurse-umane
        )

    [9] => Array
        (
            [count] => 3
            [slug] => hr-ceo
        )

    [10] => Array
        (
            [count] => 1
            [slug] => burnout-tratament
        )

    [11] => Array
        (
            [count] => 1
            [slug] => angajati-vanzarea-afacerii
        )

    [12] => Array
        (
            [count] => 1
            [slug] => job-linkedin
        )

    [13] => Array
        (
            [count] => 1
            [slug] => primul-faliment
        )

    [14] => Array
        (
            [count] => 3
            [slug] => salariu-mic
        )

    [15] => Array
        (
            [count] => 1
            [slug] => varsta-programatori
        )

)


i want to sort this array based on decending order of count

此数组包含数据数组 计数和 slug 变量 我想根据计数的降序对整个数组进行排序 我怎么能把这个..任何人都可以帮助我 我尝试了 usort、ksort 等 我是编程新手 没有得到解决方案 请帮我 我尝试了解决方案 但它没有用 有谁能解决吗?

【问题讨论】:

    标签: php arrays sorting multidimensional-array


    【解决方案1】:

    usortcallback 将为您工作。

    usort($array, function($a, $b) {
        return $b['count'] - $a['count']; # $a['count'] - $b['count']; will sort asc
    });
    

    工作演示: https://3v4l.org/SUa2F

    或者用arsort($array);做简单的事情

    工作演示: https://3v4l.org/bnWuo

    【讨论】:

    • 那么如何打印数组呢?
    • $lattt=usort($latest, function($a, $b) { return $a['count'] - $b['count']; }); echo '
      '.print_r($lattt,true).'
      ';不打印
    • @ANGELA 看看我的工作演示 :)
    • usort() 按原样处理数组,因此排序后 - print_r($latest) 而不是返回值。
    • @Always Sunny 太感谢了,怎么可以降序排列呢?
    【解决方案2】:

    按计数降序反向排序(对于类似计数,名称升序):

    <?php
    
    $items =
    [
        ['count'=>2, 'name' => 'Janitor'],
        ['count'=>5, 'name' => 'Plumber'],
        ['count'=>1, 'name' => 'Scrubber'],
        ['count'=>3, 'name' => 'Winkle Picker'],
        ['count'=>3, 'name' => 'Window Cleaner']
    ];
    
    usort($items, function($a, $b) {
        $compare = $b['count'] <=> $a['count'];
        if($compare == 0)
            $compare = $a['name'] <=> $b['name'];
    
        return $compare;
    });
    
    var_export($items);
    

    输出:

    array (
        0 => 
        array (
          'count' => 5,
          'name' => 'Plumber',
        ),
        1 => 
        array (
          'count' => 3,
          'name' => 'Window Cleaner',
        ),
        2 => 
        array (
          'count' => 3,
          'name' => 'Winkle Picker',
        ),
        3 => 
        array (
          'count' => 2,
          'name' => 'Janitor',
        ),
        4 => 
        array (
          'count' => 1,
          'name' => 'Scrubber',
        ),
      )
    

    【讨论】:

      猜你喜欢
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      • 2011-12-02
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多