如何在PHP中按长度对字符串数组排序并维护其键?

如何在PHP中按长度对字符串数组排序并维护其键?,php,arrays,string,sorting,string-length,Php,Arrays,String,Sorting,String Length,有一个字符串数组 $arr=array('longstring','string','thelongeststring'); 因此,关键是: 0=>'longstring' 1=>'string' 2=>'thelongeststring' 我想按字符串的长度排序,从最长到最短,但不改变键 $arrSorted=array(**2**=>'thelongeststring', **0**=>'longstring', **1**=>'string');

有一个字符串数组

$arr=array('longstring','string','thelongeststring');
因此,关键是:

0=>'longstring'
1=>'string'
2=>'thelongeststring'
我想按字符串的长度排序,从最长到最短,但不改变键

$arrSorted=array(**2**=>'thelongeststring', **0**=>'longstring', **1**=>'string');
我从2天起就开始使用PHP,因此我已经知道这可能对本案例有所帮助:

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

function sorting($a, $b) {
    return strlen($b) - strlen($a);
}
这给了我一个按长度排序的字符串数组,但有新的键。另一件事是
asort
,它按字母顺序对数组排序并维护其键。但我不知道如何同时做这两件事

请帮忙

使用:

uasort-使用用户定义的比较函数对数组进行排序,并维护索引关联

不维护索引关联

像这样使用它:

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

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

uasort($arr, 'sortByLength');

print_r($arr);

这将返回:

Array
(
    [2] => thelongeststring
    [0] => longstring
    [1] => string
)
…如何同时做这两件事

你快到了


usort
+
asort
=。

这确实是一个更好的答案。老实说,我的建议更像是一个提示。要记住的一个好提示是,文档中的每个排序函数都链接到同一个排序比较页面,这使得您可以很容易地找出针对给定问题需要使用的方法: