php - 您如何对对象数组进行排序?

标签 php sorting object

我有一个看起来像这样的对象数组:

Array
(    
[5] => stdClass Object
    (
        [id] => 173
        [name] => Silo 1
    )

[6] => stdClass Object
    (
        [id] => 174
        [name] => Silo 10
    )

[7] => stdClass Object
    (
        [id] => 175
        [name] => Silo 11
    )

[11] => stdClass Object
    (
        [id] => 179
        [name] => Silo 2
    )

[12] => stdClass Object
    (
        [id] => 180
        [name] => Silo 3
    )
)

我想弄清楚如何根据 name

对这些进行排序

我尝试过的事情:

usort($result, function($a, $b)
{
    if ($a->name == $b->name) return 0 ;
    return ($a->name < $b->name) ? -1 : 1 ;
});

usort($result, function($a, $b)
{
    strnatcmp($a->name, $b->name); // return (0 if ==), (-1 if <), (1 if >)
});

没有什么能给我我想要的输出:

Silo 1
Silo 2
Silo 3
Silo 10
Silo 11

我做错了什么?

最佳答案

您没有返回 strnatcmp 结果,因此 PHP 将假定一个 NULL 返回值:

usort(...) {
   return strnatcmp(...);
   ^^^^^^
}

关于php - 您如何对对象数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14835112/

相关文章:

php - 扩展 PDO 类 : why does the method return 0 instead of error message?

php - 使用 SimplePie 自定义排序顺序

javascript - 递归地 trim 对象键和值中的空格

arrays - 具有 O(n) 次反转的数组

javascript - 组件正在将文本类型的受控输入更改为不受控 - ReactJS

javascript JSON 高级

php - 在 MVC 应用程序中的何处包含 SMS 功能?

php - 单击链接在另一个网站上使用相同的 PHP session

PHP mkdir 权限

python - 棘手的 Python 数组排序