关于php的一个问题,求高手来解答

2025-03-25 12:43:06
推荐回答(5个)
回答1:

usort的方法是指对数组依照函数指定的方式排序。这个更常见的用于对多维数组排序,例如$array是从数据库取出的2维数组,现在想按照其中的'name'字段排序,那么

function my_sort($a, $b) {

    return (int) $a['name'] > $b['name'];


}


比较大小是需要两个值的,这也就是为什么有$a,$b两个参数的原因。排序的时候usort会将数组中的元素依次两两放入my_sort中进行比较并根据返回的结果进行排列。


首先说排序,就是将值整理成依照某种顺序进行排列,常见的是从大到小,从小到大,当然也可以是其他的顺序。

然后再说什么是依照函数指定的方式

其实不管是哪种排序,都是通过比较两个值来返回结果。这个比较是依照默认的规则比较的,比如2比1大,'a'比'b'大,当然,如果这不是你要的结果你可以修正返回值,例如return ((int) 1 < 2 ) * -1。


总结:直白的说,自定义函数及其返回值是为usort提供排序依据,1表示$a比$b大,-1表示$a比$b小,0表示相等。这是必须的,否则usort无法工作。你所能修改的就是比较逻辑部分,例如你可以return (int) strlen($a) > strlen($b);这是字符串长度升序排列,也能 return (int) strlen($a) < strlen($b); 这是字符串长度降序排列。


非原创,拷贝的

原地址 http://zhidao.baidu.com/link?url=SK9Qxxw5KDzDlmlrWEzhJQRQlaLHydnVFe9GJwtrTvWAPclqdzY_1p-GouitHYO2paXRHsc5tLeSeG-mrtAVVK



看完下面,不知道你是否能理解

function my_sort($a, $b)
  {
  if ($a == $b) return 0;
  return ($a > $b) ? -1 : 1;
  }
  
function my_sort_two($a, $b)
{
if ($a == $b) return 0;
return ($a > $b) ? 1 : -1;
}

$arr = array("Peter", "glenn","Cleveland","peter","cleveland", "Glenn");

usort($arr, "my_sort");

print_r ($arr);

usort($arr, "my_sort_two");

print_r($arr);


我还没用过这个函数,这次算知道了

回答2:

学会查 API 啊,这是php规定的额:usort 函数中,在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。

回答3:

对数组里面的元素作比较,如果$x[1]与y[1]相等返回0,小于-1 ,大于返回1。最后用usort对数组进行重新排序。

参考资料:http://www.w3school.com.cn/php/func_array_usort.asp

回答4:

其实这个关键在于usort函数,这个函数使用用户自定义的函数对数组排序。
通俗来说就是一个调用你自己定义的函数,来对某个数组进行排序操作。

此外usort根据返回值的不同来排序数组,(此例中$x[1],$y[1]的元素包含'Tires','Oil','Spark Plugs')
为正1时前排,反之则后续。

回答5:

usort 是用户可以自定义的排序函数,其中自定义函数中的return -1 、1 、0 是根据条件来处理以什么方式排序。