PHP排序算法稳定性探讨有何深层次见解?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1197个文字,预计阅读时间需要5分钟。
PHP排序稳定性问题+近期工作中遇到的一个棘手问题,线上输入是一串排序好的关联数组,经过一系列处理后输出的数组却乱序,本地运行无法复现。查看相关代码后,最让人头疼的是...
PHP排序稳定性问题最近在工作中碰到一个挺有意思的问题,线上输入是一串排好序的关联数组,经过一系列处理后输出的数组却是乱序,且本地运行无法复现。查看相关代码后,最让人在意的是这一段:
$categories = Arr::sort($categories, function ($node) { return $node['default']; }, true);
作用是按default优先级将元素提到前面,首先确认了下线上的illuminate/support版本和本地一致,查看Arr::sort()源码:
... $descending ? arsort($results, $options) : asort($results, $options);
最终还是调用 php 的asort,线上是 php5 而本地和测试因为最近考虑升级都换成了 php7,最后在 php5 环境下成功复现,确定出是sort问题。
本文共计1197个文字,预计阅读时间需要5分钟。
PHP排序稳定性问题+近期工作中遇到的一个棘手问题,线上输入是一串排序好的关联数组,经过一系列处理后输出的数组却乱序,本地运行无法复现。查看相关代码后,最让人头疼的是...
PHP排序稳定性问题最近在工作中碰到一个挺有意思的问题,线上输入是一串排好序的关联数组,经过一系列处理后输出的数组却是乱序,且本地运行无法复现。查看相关代码后,最让人在意的是这一段:
$categories = Arr::sort($categories, function ($node) { return $node['default']; }, true);
作用是按default优先级将元素提到前面,首先确认了下线上的illuminate/support版本和本地一致,查看Arr::sort()源码:
... $descending ? arsort($results, $options) : asort($results, $options);
最终还是调用 php 的asort,线上是 php5 而本地和测试因为最近考虑升级都换成了 php7,最后在 php5 环境下成功复现,确定出是sort问题。

