Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.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关联数组?_Php_Arrays_Associative Array_Sorting - Fatal编程技术网

如何订购这个复杂的PHP关联数组?

如何订购这个复杂的PHP关联数组?,php,arrays,associative-array,sorting,Php,Arrays,Associative Array,Sorting,如何订购这个复杂的PHP关联数组 我有一个关联数组: Array ( [4] => 3 [2] => 4 [3] => 1 [6] => 1 [1] => 1 ) 我需要按具有最高值的键对其进行排序,但我还需要将具有相同值的键保持在其原始顺序中,因此它需要出来: Array ( [2] => 4 [4] => 3 [3] => 1 [6] => 1 [1] =&

如何订购这个复杂的PHP关联数组

我有一个关联数组:

Array (
    [4] => 3
    [2] => 4
    [3] => 1
    [6] => 1
    [1] => 1
)
我需要按具有最高值的键对其进行排序,但我还需要将具有相同值的键保持在其原始顺序中,因此它需要出来:

Array (
    [2] => 4
    [4] => 3
    [3] => 1
    [6] => 1
    [1] => 1
    )
我不能使用arsort(),因为它根据键的数字顺序重新排列具有相同值的键,我在这里真是不知所措!有什么建议吗?

救援:

$blub = array(4 => 3, 2 => 4, 3 => 1, 6 => 1, 1 => 1);
natsort($blub);
$blub = array_reverse($blub, true);

var_dump($blub);
这将始终输出:

array(5) { [2]=> int(4) [4]=> int(3) [3]=> int(1) [6]=> int(1) [1]=> int(1) }
natsort似乎使用了一种不同的排序算法,幸运的是,当值与asort相反时,它保留了顺序。但是,请注意,natsort可能会比其他传统排序功能稍慢一些,因为这一点。

要解决此问题,请执行以下操作:

$blub = array(4 => 3, 2 => 4, 3 => 1, 6 => 1, 1 => 1);
natsort($blub);
$blub = array_reverse($blub, true);

var_dump($blub);
这将始终输出:

array(5) { [2]=> int(4) [4]=> int(3) [3]=> int(1) [6]=> int(1) [1]=> int(1) }
natsort似乎使用了一种不同的排序算法,幸运的是,当值与asort相反时,它保留了顺序。但是,请注意,由于这一点,natsort可能比其他传统排序函数稍慢