Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP排序问题,arsort vs asort+;反向排列_Php_Sorting - Fatal编程技术网

PHP排序问题,arsort vs asort+;反向排列

PHP排序问题,arsort vs asort+;反向排列,php,sorting,Php,Sorting,我最近在做一个euler项目的习题集,遇到了这个奇怪的问题。我已经用第一个解决方案正确地解决了问题,但我不知道为什么另一个版本不能按预期工作 以下是有效的代码: asort($card_count, SORT_NUMERIC); $card_count = array_reverse($card_count, true); 以下是不符合以下条件的代码: arsort($card_count, SORT_NUMERIC); 这是我唯一改变的一条线,它对最终结果产生了巨大的影响。你知道这是怎么回

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

以下是有效的代码:

asort($card_count, SORT_NUMERIC);
$card_count = array_reverse($card_count, true);
以下是不符合以下条件的代码:

arsort($card_count, SORT_NUMERIC);

这是我唯一改变的一条线,它对最终结果产生了巨大的影响。你知道这是怎么回事吗?

在数组中排序相等的值时会出现问题。以阵列为例:

$arr = array(
    'a' => 1,
    'b' => 1,
    'c' => 1,
    'd' => 1
);
在此数组上调用
asort($arr,SORT\u 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
)
Array
(
    [c] => 2
    [d] => 1
    [b] => 1
    [a] => 1
)

威尔·耶尔德:

Array
(
    [c] => 2
    [a] => 1
    [b] => 1
    [d] => 1
)
Array
(
    [c] => 2
    [d] => 1
    [b] => 1
    [a] => 1
)

希望这能对这个问题有所启发

你以后是如何读取数组的?你使用的是什么索引?这两个索引对我来说都是一样的:这是一个扑克解决方案,所以基本上它是将密钥中的卡值(例如“2”或“a”或“J”)映射到它在输入中出现的次数,所以它可能看起来像['a'=>2',8'=>2',4'=>1]来表示两个a,两个八和一个四。我所依赖的事实是,最高金额应在前面,较低金额应在后面。如果有必要,我可以发布一个完整的代码解决方案,只是我不想给出答案,因为我知道这是违反PE政策的。所以你说这是家庭作业。劳尔,不,正如我在问题中所说的,这是一个我已经解决的项目euler问题。。。