PHP usort() 未按预期工作

PHP usort() not working as expected

我有一些简单的 PHP 代码,用于格式化包含有关某些歌曲的信息的对象。我尝试使用 usort() 对这些信息进行排序,但我无法完全正确地进行排序。

print_r($my_songs_object) returns(高度简化):

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总是returns数据顺序。

在上面的例子中,项目 1 应该在项目 0 之前。

如何修改 usort 函数以获得所需的输出?

编辑:

正在创建原始对象 array_merge 需要合并的两个预先存在的对象。我正在使用以下代码组合它们:

$my_songs_object = (object)array_merge((array)$a->items, (array)$b->items);

也许修改组合对象的方式会使组合后的 $my_songs_object 更容易排序?

答案是,事实证明,在初始合并后我根本不需要将数组类型转换为对象。

变化中:

$my_songs_object = (object)array_merge((array)$a->items, (array)$b->items);

收件人:

$my_songs_object = array_merge((array)$a->items, (array)$b->items);

问题解决了。感谢@Cbroe 引起我的注意:)

我会在两天内将其标记为已解决。