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 引起我的注意:)
我会在两天内将其标记为已解决。
我有一些简单的 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 引起我的注意:)
我会在两天内将其标记为已解决。