php数组排序有哪几种

发布时间:2022-06-01 15:02:54 作者:iii
来源:亿速云 阅读:572

PHP数组排序有哪几种

在PHP中,数组是一种非常常用的数据结构,而对数组进行排序是开发过程中常见的操作。PHP提供了多种排序函数,可以根据不同的需求对数组进行排序。本文将介绍PHP中常见的数组排序方法及其使用场景。

1. sort() 函数

sort() 函数用于对数组进行升序排序。它会直接修改原数组,并返回一个布尔值表示排序是否成功。

$numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
sort($numbers);
print_r($numbers);

输出结果:

Array
(
    [0] => 1
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 3
    [5] => 4
    [6] => 5
    [7] => 5
    [8] => 5
    [9] => 6
    [10] => 9
)

2. rsort() 函数

rsort() 函数与 sort() 函数类似,但它是对数组进行降序排序。

$numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
rsort($numbers);
print_r($numbers);

输出结果:

Array
(
    [0] => 9
    [1] => 6
    [2] => 5
    [3] => 5
    [4] => 5
    [5] => 4
    [6] => 3
    [7] => 3
    [8] => 2
    [9] => 1
    [10] => 1
)

3. asort() 函数

asort() 函数用于对关联数组按值进行升序排序,同时保持键值对的关联。

$fruits = ["d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"];
asort($fruits);
print_r($fruits);

输出结果:

Array
(
    [c] => apple
    [b] => banana
    [d] => lemon
    [a] => orange
)

4. arsort() 函数

arsort() 函数与 asort() 函数类似,但它是对关联数组按值进行降序排序。

$fruits = ["d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"];
arsort($fruits);
print_r($fruits);

输出结果:

Array
(
    [a] => orange
    [d] => lemon
    [b] => banana
    [c] => apple
)

5. ksort() 函数

ksort() 函数用于对关联数组按键进行升序排序。

$fruits = ["d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"];
ksort($fruits);
print_r($fruits);

输出结果:

Array
(
    [a] => orange
    [b] => banana
    [c] => apple
    [d] => lemon
)

6. krsort() 函数

krsort() 函数与 ksort() 函数类似,但它是对关联数组按键进行降序排序。

$fruits = ["d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"];
krsort($fruits);
print_r($fruits);

输出结果:

Array
(
    [d] => lemon
    [c] => apple
    [b] => banana
    [a] => orange
)

7. usort() 函数

usort() 函数允许你使用自定义的比较函数对数组进行排序。这个函数会直接修改原数组。

function compare($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

$numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
usort($numbers, "compare");
print_r($numbers);

输出结果:

Array
(
    [0] => 1
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 3
    [5] => 4
    [6] => 5
    [7] => 5
    [8] => 5
    [9] => 6
    [10] => 9
)

8. uasort() 函数

uasort() 函数与 usort() 函数类似,但它用于对关联数组按值进行排序,同时保持键值对的关联。

function compare($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

$fruits = ["d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"];
uasort($fruits, "compare");
print_r($fruits);

输出结果:

Array
(
    [c] => apple
    [b] => banana
    [d] => lemon
    [a] => orange
)

9. uksort() 函数

uksort() 函数允许你使用自定义的比较函数对关联数组的键进行排序。

function compare($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

$fruits = ["d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"];
uksort($fruits, "compare");
print_r($fruits);

输出结果:

Array
(
    [a] => orange
    [b] => banana
    [c] => apple
    [d] => lemon
)

10. natsort() 函数

natsort() 函数使用“自然排序”算法对数组进行排序。自然排序算法会按照人类习惯的方式对字符串进行排序。

$images = ["img12.png", "img10.png", "img2.png", "img1.png"];
natsort($images);
print_r($images);

输出结果:

Array
(
    [3] => img1.png
    [2] => img2.png
    [1] => img10.png
    [0] => img12.png
)

11. natcasesort() 函数

natcasesort() 函数与 natsort() 函数类似,但它不区分大小写。

$images = ["img12.png", "Img10.png", "img2.png", "Img1.png"];
natcasesort($images);
print_r($images);

输出结果:

Array
(
    [3] => Img1.png
    [2] => img2.png
    [1] => Img10.png
    [0] => img12.png
)

12. array_multisort() 函数

array_multisort() 函数可以对多个数组或多维数组进行排序。它可以同时对多个数组进行排序,或者对多维数组的某一列进行排序。

$data = [
    ['volume' => 67, 'edition' => 2],
    ['volume' => 86, 'edition' => 1],
    ['volume' => 85, 'edition' => 6],
    ['volume' => 98, 'edition' => 2],
    ['volume' => 86, 'edition' => 6],
    ['volume' => 67, 'edition' => 7],
];

$volume = array_column($data, 'volume');
$edition = array_column($data, 'edition');

array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
print_r($data);

输出结果:

Array
(
    [0] => Array
        (
            [volume] => 98
            [edition] => 2
        )

    [1] => Array
        (
            [volume] => 86
            [edition] => 1
        )

    [2] => Array
        (
            [volume] => 86
            [edition] => 6
        )

    [3] => Array
        (
            [volume] => 85
            [edition] => 6
        )

    [4] => Array
        (
            [volume] => 67
            [edition] => 2
        )

    [5] => Array
        (
            [volume] => 67
            [edition] => 7
        )

)

总结

PHP提供了丰富的数组排序函数,可以根据不同的需求选择合适的排序方法。无论是简单的数值排序,还是复杂的多维数组排序,PHP都能轻松应对。掌握这些排序函数,可以大大提高开发效率。

推荐阅读:
  1. php有哪几种算法
  2. PHP数据类型有哪几种?

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php

上一篇:Java如何构建JDBC应用程序

下一篇:java枚举自带的方法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》