请解释以下排序功能

时间:2013-10-18 10:53:45

标签: php sorting

此函数按照元素大小的递增顺序对数组进行排序,如果大小相等,则根据字典顺序排序。

请有人帮忙,提前致谢:)

    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

3 个答案:

答案 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函数使用用户定义的比较函数按值对给定数组进行排序。

用户定义的函数必须返回

  • 如果参数相等则为0
  • 如果第一个参数小于第二个
  • ,则整数值小于零
  • 如果第一个参数大于第二个
  • ,则整数值大于零

在您的代码段中,此用户定义的比较函数为lensort,它将给定的字符串与其长度进行比较。