广告
返回顶部
首页 > 资讯 > 精选 >PHP 数组稳定排序:保持相等元素的顺序
  • 426
分享到

PHP 数组稳定排序:保持相等元素的顺序

php数组 2024-04-26 14:04:29 426人浏览 独家记忆
摘要

PHP 数组的稳定排序可通过以下方法实现:创建一个自定义比较器,比较时考虑原始索引;使用 uasort() 函数,根据键对值排序,并将值设置为包含原始索引的元素;这些方法确保相等元素在排

PHP 数组的稳定排序可通过以下方法实现:创建一个自定义比较器,比较时考虑原始索引;使用 uasort() 函数,根据键对值排序,并将值设置为包含原始索引的元素;这些方法确保相等元素在排序后的顺序与原始顺序相同。

PHP 数组稳定排序:保持相等元素的顺序

简介

稳排序确保相等元素在排序后的顺序与原始顺序相同。对于稳定排序,以下比较是有效的:

a == b => sort(a) <= sort(b)

php 数组原生的 sort()rsort() 函数是不稳定的。本篇文章将探究稳定排序的方法。

方法

1. 自定义比较器

使用自定义比较器,在相等元素时比较它们的原始索引:

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

然后在 usort()uksort() 函数中使用它:

usort($arr, 'cmp');

2. 使用 uasort()

uasort() 根据键对值进行排序,ksort() 对键进行排序。因此,您可以将数组中的值设置为一个包含原始索引的元素,然后对键进行排序:

$indices = array_keys($arr);
uasort($arr, function($a, $b) use ($indices) {
    if ($a == $b) {
        return 0;
    }
    return $indices[array_search($a, $arr)] < $indices[array_search($b, $arr)] ? -1 : 1;
});

实战案例

对学生成绩数组按分数进行排序,同时保持同分学生原始的顺序:

$scores = [
    'John' => 90,
    'Mary' => 85,
    'Bob' => 85,
    'Alice' => 95
];

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

print_r($scores);

输出:

Array
(
    [Alice] => 95
    [John] => 90
    [Bob] => 85
    [Mary] => 85
)

结论

上面列出的方法可以实现 PHP 数组的稳定排序,以便保持相等元素的顺序。

以上就是PHP 数组稳定排序:保持相等元素的顺序的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: PHP 数组稳定排序:保持相等元素的顺序

本文链接: https://www.lsjlt.com/news/609424.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php数组元素排序的方法有哪些
    这篇文章主要介绍php数组元素排序的方法有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!PHP中可使用array_multisort()、asort()、arsort()、krsort()、ksort()、nat...
    99+
    2023-06-15
  • php数组排序并保持索引关系的示例分析
    这篇文章主要介绍了php数组排序并保持索引关系的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php是什么语言php,一个嵌套的缩写名称,是英文超级文本预处理语言(P...
    99+
    2023-06-14
  • php数组(数组的定义、使用、删除数组、数组操作符、数组排序、数组元素查找、数组的常用函数)
    什么是数组 数组是一种数据类型,在PHP中广泛应用。 数组是一个可以存储一组或一系列数值的变量。 在PHP中,数组中的元素分为两个部分,分别为键(Key)和值(Value)。 “键”为元素的识别名称,也称为数组下标,“值”为元素的内容。 “...
    99+
    2023-09-08
    php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作