我有一些简单的PHP代码,用来格式化一个包含一些歌曲信息的对象。我试着使用usort()对这些信息进行排序,但无法使排序工作正常。
print_r($my_songs_object)返回(严重简化):
stdClass Object
(
[0] => stdClass Object
(
[track] => stdClass Object
(
[name] => ZZZ
)
)
[1] => stdClass Object
(
[track] => stdClass Object
(
[name] => YYY
)
)
)我的PHP排序代码:
usort($my_songs_object, function($a, $b) {
return ucfirst($a->track->name) > ucfirst($b->track->name) ? 1 : -1;
});在运行上述usort()之后,$my_songs_object总是按顺序返回数据。
在上面的例子中,项目1应该放在项目0之前。
如何修改usort函数以实现所需的输出?
编辑:
正在创建原始对象--一个由两个需要组合的预先存在的对象组成的array_merge。我使用以下代码来组合它们:
$my_songs_object = (object)array_merge((array)$a->items, (array)$b->items);也许修改对象组合的方式会使组合的$my_songs_object更容易排序?
发布于 2015-10-11 02:02:53
答案是,实际上,在初始合并之后,我根本不需要将数组键入到对象中。
改变:
$my_songs_object = (object)array_merge((array)$a->items, (array)$b->items);至:
$my_songs_object = array_merge((array)$a->items, (array)$b->items);解决了问题。感谢@Cbroe让我注意到这一点:)
两天后我会把这件事标为已解决的。
https://stackoverflow.com/questions/33060231
复制相似问题