如何通过其中一个元素属性对对象数组进行排序?

时间:2013-02-16 22:10:18

标签: php sorting object

我在PHP中有一个遵循这种结构的数组:

$soap->progress = `

0 =>
object(stdClass)#3 (5) {
  ["step"]=>
  int(6)
  ....
}

1 =>
object(stdClass)#4 (5) {
  ["step"]=>
  int(8)

....

}

2 =>
object(stdClass)#5 (5) {
  ["step"]=>
  int(1)

....

}

3 =>
object(stdClass)#6 (5) {
  ["step"]=>
  int(4)

....

}

4 =>
object(stdClass)#7 (5) {
  ["step"]=>
  int(3)
....
}


.... and so on

我如何按$soap->progress[x]->step ??

对此进行排序

2 个答案:

答案 0 :(得分:2)

如果您需要排序这些对象的数组,可以使用usort函数定义自己的自定义排序回调:

usort($arrayOfObjects, function($a, $b) {
  if($a->step == $b->step) {
    return 0;
  else if($a->step > $b->step) {
    return -1;
  } else {
    return 1;
  }
});

答案 1 :(得分:1)

使用usort()

function sortByStep($a, $b)
{
    if ($a->step == $b->step) {
        return 0;
    }
    return ($a->step < $b->step) ? -1 : 1;
}

usort($array, "sortByStep");