在php中使用usort来排序对象数组?

and*_*899 2 php sorting object usort

我确实看过了,但我仍然有点困惑......

这是$ myobject对象的样子:

Array
(
    [0] => stdClass Object
        (
            [tid] => 13
            [vid] => 4
        )

    [1] => stdClass Object
        (
            [tid] => 10
            [vid] => 4
        )

    [2] => stdClass Object
        (
            [tid] => 34
            [vid] => 4
        )

    [3] => stdClass Object
        (
            [tid] => 9
            [vid] => 4
        )
Run Code Online (Sandbox Code Playgroud)

我看到了这个:

function cmp( $a, $b )
{ 
  if(  $a->weight ==  $b->weight ){ return 0 ; } 
  return ($a->weight < $b->weight) ? -1 : 1;
} 
usort($myobject,'cmp');
Run Code Online (Sandbox Code Playgroud)

我试图按照tid排序,但是,我想我真的不确定我是否必须改变体重?或者它会按原样工作吗?我试过了,但没有输出......

sco*_*ein 6

cmp是一个回调函数,usort用它来比较复杂的对象(比如你的)来弄清楚如何对它们进行排序.修改cmp供您使用(或将其重命名为您想要的任何内容)

function cmp( $a, $b )
{ 
  if(  $a->tid ==  $b->tid ){ return 0 ; } 
  return ($a->tid < $b->tid) ? -1 : 1;
} 
usort($myobject,'cmp');

function sort_by_tid( $a, $b )
{ 
  if(  $a->tid ==  $b->tid ){ return 0 ; } 
  return ($a->tid < $b->tid) ? -1 : 1;
} 
usort($myobject,'sort_by_tid');
Run Code Online (Sandbox Code Playgroud)

http://www.php.net/usort