0
我有一些简单的PHP代码,用于格式化包含某些歌曲信息的对象。我尝试使用usort()对这些信息进行排序,但我无法完全正确地进行排序。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更简单的方法是什么?
甚至可以在stdClass(而不是阵列)上工作吗? – user2864740
@frosty:_“usort是一个痛苦的屁股使用”_ - 不,它是一个伟大的工具,基本上可以完成任何类型的自定义排序,你可以想到的。这是一个非常方便的事情,你只需要知道你在做什么。 – CBroe
你为什么不简单地将这些东西排在物体之前? – CBroe