按索引对stdClass对象进行排序

时间:2013-01-16 03:10:35

标签: php arrays sorting object

我已经在stackoverflow上看到了一百万个类似的问题,但是我找不到它们,处理对对象的实际索引值进行排序。

我有一个标准对象,我给它一个值($ vid)来排序,而不是逐渐填充自己。

foreach ($array_videos as $v) {
            $govideo = $this->staff_model->get_video($v->vid);
            $goforit[$v->vid] = $vimeo->call('vimeo.videos.getInfo', array('video_id' => $govideo->video_id));
}

当我这样做时,我收到以下输出:

[33] => stdClass Object ...
[12] => stdClass Object ...
[55] => stdClass Object ...
[61] => stdClass Object ...

我想通过对象索引ASC或DESC对这个对象数组进行排序。例如:

[61] => stdClass Object ...
[55] => stdClass Object ...
[33] => stdClass Object ...
[12] => stdClass Object ...

我尝试过ksort和一些不同的usort函数。似乎无法绕过这个。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:4)

ksort()可以解决问题:

ksort($array_videos);

ksort将对ASC中的数组键进行排序。您可以使用array_reverse()快速撤消订单:

$array_videos = array_reverse($array_videos);

对于您的真实世界示例,您可以执行以下操作之一:

foreach (ksort($array_videos) as $v)

foreach (array_reverse(ksort($array_videos)) as $v)

更好!! 要根据Jim的建议将排序反转为DESC,您可以使用krsort()

ksort($array_videos); //ASC
krsort($array_videos); //DESC