反向自然排序PHP数组而不保留键

Phi*_*hil 5 php arrays sorting

我希望以相反的顺序自然地对数组进行排序,而不是保留键.例如,我想要这个数组:

[0] => 1-string
[1] => 2-string
[2] => 10-string
[3] => 4-srting
[4] => 3-srting
Run Code Online (Sandbox Code Playgroud)

最终像这样:

[0] => 10-srting
[1] => 4-string
[2] => 3-string
[3] => 2-string
[4] => 1-string
Run Code Online (Sandbox Code Playgroud)

我用usort($ array,'strnatcmp')得到了它; 但它并没有按相反的顺序排列.array_reverse()之后没有帮助.

有任何想法吗?

Vol*_*erK 6

关于"array_reverse()之后我有点不解." 因为

<?php
echo PHP_VERSION, "\n";

$x = array( 
    '1-string',
    '2-string',
    '10-string',
    '4-srting',
    '3-srting'
);

natsort($x);
$x = array_reverse($x, false);
print_r($x);
Run Code Online (Sandbox Code Playgroud)

版画

5.3.8
Array
(
    [0] => 10-string
    [1] => 4-srting
    [2] => 3-srting
    [3] => 2-string
    [4] => 1-string
)
Run Code Online (Sandbox Code Playgroud)

在我的机器上


And*_*ore 5

使用$preserveKeys属性array_reverse()来重置键以及在a之后反转数组natcasesort().

function rnatcasesort(&$array) {
    natcasesort($array);
    $array = array_reverse($array, false);
}

$values = array('1-string', '2-string', '10-string', '4-string', '3-string');

rnatcasesort($values);

var_dump($values);

/*
array(5) {
  [0]=>
  string(9) "10-string"
  [1]=>
  string(8) "4-string"
  [2]=>
  string(8) "3-string"
  [3]=>
  string(8) "2-string"
  [4]=>
  string(8) "1-string"
}
*/
Run Code Online (Sandbox Code Playgroud)