如何按长度对字符串数组进行排序并在 PHP 中维护它们的键?

How to sort array of string by length and maintain their keys in PHP?

有一个字符串数组;

$arr=array('longstring','string','thelongeststring');

所以关键是:

0=>'longstring'
1=>'string'
2=>'thelongeststring'

我想按字符串的长度从最长到最短排序,但不更改它们的键;

$arrSorted=array(**2**=>'thelongeststring', **0**=>'longstring', **1**=>'string');

我在 PHP 工作了 2 天,所以我已经知道这可能对这种情况有所帮助:

...
    usort($twoDim, 'sorting');
}

function sorting($a, $b) {
    return strlen($b) - strlen($a);
}

这是给我的数组,其中字符串按长度排序,但有新的键。另一件事是 asort 它按字母顺序对数组进行排序并维护其键。但是我不知道如何同时做这两件事...

请帮忙!

使用uasort:

uasort — Sort an array with a user-defined comparison function and maintain index association

usort 不维护索引关联。

这样使用:

function sortByLength ($a, $b) {
    return strlen($b) - strlen($a);
}

$arr = ['longstring', 'string', 'thelongeststring'];

uasort($arr, 'sortByLength');

print_r($arr);

eval.in demo

这个returns:

Array
(
    [2] => thelongeststring
    [0] => longstring
    [1] => string
)

...how to do these two things in the same time

你快到了。

usort + asort = uasort.