此函数按照元素大小的递增顺序对数组进行排序,如果大小相等,则根据字典顺序排序。
请有人帮忙,提前致谢:)
function lensort($a,$b){
$la = strlen( $a);
$lb = strlen( $b);
if( $la == $lb) {
return strcmp( $a, $b);
}
return $la - $lb;
}
usort($array,'lensort');
I appreciate the responses, but i want if someone can just write a code to do the same task, not using inbuilt function
答案 0 :(得分:1)
如果$a
小于$b
,则传递给usort的函数应返回小于零的整数,如果$a == $b
则返回0,如果$a
更大则返回大于0的整数比$b
。
在这种情况下,它使用$la - $lb
,因为这将根据$a
和$b
的长度差异返回一个适当的整数。如果长度相同,则使用strcmp
,这也将返回一个适当的整数。
答案 1 :(得分:0)
大致相同:
// declare the function
function lensort($a,$b){
// Set $LA to the length of string $a
$la = strlen( $a);
// Set $Lb to the length of string $b
$lb = strlen( $b);
// If both strings are of equal length
if( $la == $lb) {
// Return a neg or pos number based on which of the two strings is larger, alfabetically seen
return strcmp( $a, $b);
}
// If not the same length, just return the size of one minus the other
return $la - $lb;
}
// Use usort to perform a person function-based sorting routine on the input data.
usort($array,'lensort');
答案 2 :(得分:0)
usort
函数使用用户定义的比较函数按值对给定数组进行排序。
用户定义的函数必须返回
在您的代码段中,此用户定义的比较函数为lensort
,它将给定的字符串与其长度进行比较。