我最近正在处理一个项目的euler问题集,并遇到了这个奇怪的问题。我已经用第一个解决方案正确地解决了这个问题,但我不知道为什么另一个版本不能像预期的那样工作。
以下是工作的代码:
asort($card_count, SORT_NUMERIC);
$card_count = array_reverse($card_count, true);下面是没有这样做的代码:
arsort($card_count, SORT_NUMERIC);这是我更改的唯一行,它在最终结果中产生了巨大的差异。你知道这是怎么回事吗?
发布于 2012-07-24 04:51:23
问题出现在对数组中的相等值进行排序时。以数组为例:
$arr = array(
'a' => 1,
'b' => 1,
'c' => 1,
'd' => 1
);在此数组上调用asort($arr, SORT_NUMERIC)将反转数组。因此,代码行如下:
asort($arr, SORT_NUMERIC);
$arr = array_reverse($arr, true);将把数组放回原始顺序中。
因此,添加一个更高的值来改变数组:
$arr = array(
'a' => 1,
'b' => 1,
'c' => 2,
'd' => 1
);
asort($arr, SORT_NUMERIC);
$arr = array_reverse($arr, true);威尔·耶尔德:
Array
(
[c] => 2
[a] => 1
[b] => 1
[d] => 1
)而
arsort($arr, SORT_NUMERIC);威尔·耶尔德:
Array
(
[c] => 2
[d] => 1
[b] => 1
[a] => 1
)希望这能让我们对这个问题有所了解。
https://stackoverflow.com/questions/11618980
复制相似问题