首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP排序问题,arsort vs asort + array_reverse

PHP排序问题,arsort vs asort + array_reverse
EN

Stack Overflow用户
提问于 2012-07-24 03:15:25
回答 1查看 1.2K关注 0票数 7

我最近正在处理一个项目的euler问题集,并遇到了这个奇怪的问题。我已经用第一个解决方案正确地解决了这个问题,但我不知道为什么另一个版本不能像预期的那样工作。

以下是工作的代码:

代码语言:javascript
复制
asort($card_count, SORT_NUMERIC);
$card_count = array_reverse($card_count, true);

下面是没有这样做的代码:

代码语言:javascript
复制
arsort($card_count, SORT_NUMERIC);

这是我更改的唯一行,它在最终结果中产生了巨大的差异。你知道这是怎么回事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-24 04:51:23

问题出现在对数组中的相等值进行排序时。以数组为例:

代码语言:javascript
复制
$arr = array(
    'a' => 1,
    'b' => 1,
    'c' => 1,
    'd' => 1
);

在此数组上调用asort($arr, SORT_NUMERIC)反转数组。因此,代码行如下:

代码语言:javascript
复制
asort($arr, SORT_NUMERIC);
$arr = array_reverse($arr, true);

将把数组放回原始顺序中。

因此,添加一个更高的值来改变数组:

代码语言:javascript
复制
$arr = array(
    'a' => 1,
    'b' => 1,
    'c' => 2,
    'd' => 1
);

asort($arr, SORT_NUMERIC);
$arr = array_reverse($arr, true);

威尔·耶尔德:

代码语言:javascript
复制
Array
(
    [c] => 2
    [a] => 1
    [b] => 1
    [d] => 1
)

代码语言:javascript
复制
arsort($arr, SORT_NUMERIC);

威尔·耶尔德:

代码语言:javascript
复制
Array
(
    [c] => 2
    [d] => 1
    [b] => 1
    [a] => 1
)

希望这能让我们对这个问题有所了解。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11618980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档