按键排序数组并反转结果

kam*_*mal 3 php arrays sorting

我有一个像这样的数组:

$array = array(
   [1]=>'something',
   [0.2]=>'something',
   [0.1]=>'something',
   [0.3]=>'something',
   [0.10]=>'something'
);
Run Code Online (Sandbox Code Playgroud)

现在我想按键排序这个数组,所以我使用这个代码:

uksort($array, 'strnatcasecmp');
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常,但唯一的问题是我想要反转结果.为此,我用krsort,array_reverse,rsort之后uksort,但他们都改变uksort的结果.

那么我可以按自然顺序按键排序这个数组并反转结果吗?

我想要的应该是:

$array = array(
   [1]=>'something',
   [0.10]=>'something',
   [0.3]=>'something',
   [0.2]=>'something',
   [0.1]=>'something'
);
Run Code Online (Sandbox Code Playgroud)

TaZ*_*TaZ 9

试试这个:

uksort($array, create_function('$a,$b', 'return -strnatcasecmp($a,$b);'));
Run Code Online (Sandbox Code Playgroud)

由于您已经使用了uksort的变体(用户函数定义的排序),因此该版本只是通过反转比较函数的结果来反转顺序.我认为它应该适合你.

或者试试这个:

uksort($array, 'strnatcasecmp');
$array = array_reverse($array, true);
Run Code Online (Sandbox Code Playgroud)

请注意true保留密钥的参数.