我想在php中对数组进行排序

时间:2019-10-19 15:46:23

标签: php arrays sorting multidimensional-array

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

此数组包含数据数组 计数和一个子变量 我想根据计数的降序对整个数组进行排序 我该如何分类..任何人都可以帮助我 我试过usort,ksort等 编程新手 没有解决方案 请帮我 我试图解决 但它没有工作 有人可以解决吗?

2 个答案:

答案 0 :(得分:2)

带有回调

usort将为您服务。

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

答案 1 :(得分:0)

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

<?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',
    ),
  )