首页 >后端开发 >php教程 >如何在 PHP 中按值对多维数组进行排序?

如何在 PHP 中按值对多维数组进行排序?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-23 12:21:11889浏览

How to Sort a Multi-dimensional Array by Value in PHP?

按值对多维数组进行排序

在多维数组中,您可能会遇到需要根据值对其元素进行排序的需求特定键的值。例如,考虑以下数组:

Array
(
    [0] => Array
        (
            [hashtag] => a7e87329b5eab8578f4f1098a152d6f4
            [title] => Flower
            [order] => 3
        )

    [1] => Array
        (
            [hashtag] => b24ce0cd392a5b0b8dedc66c25213594
            [title] => Free
            [order] => 2
        )

    [2] => Array
        (
            [hashtag] => e7d31fc0602fb2ede144d18cdffd816b
            [title] => Ready
            [order] => 1
        )
)

按“order”键排序

要按“order”键对数组进行排序,您可以使用usort() 函数。下面是其用法的全面细分:

PHP 5.2 或更早版本:

首先定义一个排序函数:

function sortByOrder($a, $b) {
    if ($a['order'] > $b['order']) {
        return 1;
    } elseif ($a['order'] < $b['order']) {
        return -1;
    }
    return 0;
}

PHP 5.3 及更高版本:

使用匿名函数:

usort($myArray, function($a, $b) {
    if ($a['order'] > $b['order']) {
        return 1;
    } elseif ($a['order'] < $b['order']) {
        return -1;
    }
    return 0;
});

PHP 7:

利用宇宙飞船运算符:

usort($myArray, function($a, $b) {
    return $a['order'] <=> $b['order'];
});

PHP 7.4:

使用箭头函数:

usort($myArray, fn($a, $b) => $a['order'] <=> $b['order']);

多维排序:

对于多维排序,修改排序函数以在第一个元素为零时引用后续排序元素。例如:

usort($myArray, function($a, $b) {
    $retval = $a['order'] <=> $b['order'];
    if ($retval == 0) {
        $retval = $a['suborder'] <=> $b['suborder'];
        if ($retval == 0) {
            $retval = $a['details']['subsuborder'] <=> $b['details']['subsuborder'];
        }
    }
    return $retval;
});

键关联

如果需要维护键关联,请使用 uasort() 而不是 usort()。

以上是如何在 PHP 中按值对多维数组进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn