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