【问题标题】:Sort stdClass object by its index按索引对 stdClass 对象进行排序
【发布时间】:2013-01-16 03:10:34
【问题描述】:

我已经在 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 函数。似乎无法解决这个问题。

任何帮助将不胜感激。

【问题讨论】:

  • ksort 有什么问题?

标签: php arrays sorting object


【解决方案1】:

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

【讨论】:

  • 有一个krsort(),它按逆序排列。
  • 好电话。你会认为他们只会有一个可选的反向标志,而不是使用 sort() 标志。
猜你喜欢
  • 2021-08-17
  • 2022-10-14
  • 2011-12-30
  • 2012-06-23
  • 2014-10-31
  • 2018-02-11
  • 2011-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多