我有一些简单的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更容易排序?
答案 0 :(得分:0)
答案是,事实证明,在初始合并之后,我根本不需要将数组转换为对象。
更改:
$my_songs_object = (object)array_merge((array)$a->items, (array)$b->items);
要:
$my_songs_object = array_merge((array)$a->items, (array)$b->items);
解决了这个问题。感谢@Cbroe引起我的注意:)
我会在两天内将此标记为已解决。