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

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

Patricia Arquette
Patricia Arquette原创
2024-12-20 11:35:08113浏览

How to Sort a Multi-Dimensional Array in PHP by a Specific Key?

按特定键对多维数组进行排序

按特定键值对多维数组进行排序可以使用以下各种方法来实现PHP。让我们探索一个常见问题及其使用此技术的解决方案。

问题:

我们如何根据“order”键对数组进行排序?

数组结构:

$myArray = [
    [
        'hashtag' => 'a7e87329b5eab8578f4f1098a152d6f4',
        'title'   => 'Flower',
        'order'   => 3
    ],
    [
        'hashtag' => 'b24ce0cd392a5b0b8dedc66c25213594',
        'title'   => 'Free',
        'order'   => 2
    ],
    [
        'hashtag' => 'e7d31fc0602fb2ede144d18cdffd816b',
        'title'   => 'Ready',
        'order'   => 1
    ]
];

解:

1.将 usort 与自定义函数结合使用:

此方法涉及定义一个自定义排序函数,该函数比较“顺序”值并返回适当的比较结果。

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

usort($myArray, 'sortByOrder');

2.使用匿名函数:

在 PHP 5.3 及更高版本中,可以使用匿名函数来简化自定义排序功能。

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

3.使用 Spaceship 运算符(PHP 7 及更高版本):

PHP 7 引入了 spaceship 运算符 (< =>) 来进行简洁的比较操作。

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

4。使用箭头函数(PHP 7.4 及更高版本):

箭头函数通过消除 function 关键字进一步简化代码。

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