如何按长度对字符串数组进行排序并在 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);
这个returns:
Array
(
[2] => thelongeststring
[0] => longstring
[1] => string
)
...how to do these two things in the same time
你快到了。
usort
+ asort
= uasort
.
有一个字符串数组;
$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);
这个returns:
Array
(
[2] => thelongeststring
[0] => longstring
[1] => string
)
...how to do these two things in the same time
你快到了。
usort
+ asort
= uasort
.