You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中如何按name属性对零售商对象数组按字母排序?

嘿,这个需求在日常开发里太常见了!PHP里有几个简单直接的方法能帮你按对象的name属性做字母排序,我给你整理两种最常用的方案:

方法一:用usort()排序(不保留原数组键)

usort()是PHP里用来对数组进行自定义排序的函数,它会直接修改原数组,并且不保留原有的键名。适合你的零售商数组是索引数组的情况:

// 示例零售商数组
$retailers = [
    (object) ['name' => 'Zara'],
    (object) ['name' => 'Apple Store'],
    (object) ['name' => 'Best Buy']
];

// 按name属性不区分大小写排序
usort($retailers, function($a, $b) {
    // strcasecmp()会忽略大小写,要是需要严格区分大小写就用strcmp()
    return strcasecmp($a->name, $b->name);
});

方法二:用uasort()排序(保留原数组键)

如果你的零售商数组是关联数组(每个元素有自定义的键),不想丢失这些键的话,就用uasort(),用法和usort()几乎完全一样,只是会保留原键:

uasort($retailers, function($a, $b) {
    return strcasecmp($a->name, $b->name);
});

PHP 7+ 更简洁的写法:太空船运算符<=>

从PHP 7开始,你可以用太空船运算符来简化比较逻辑,代码更清爽:

// 区分大小写的排序
usort($retailers, function($a, $b) {
    return $a->name <=> $b->name;
});

// 不区分大小写的排序,先转小写再比较
usort($retailers, function($a, $b) {
    return strtolower($a->name) <=> strtolower($b->name);
});

小提示:处理特殊情况

如果你的对象里name属性可能为空、不存在或者不是字符串,最好加个判断避免警告:

usort($retailers, function($a, $b) {
    $nameA = isset($a->name) ? strtolower((string)$a->name) : '';
    $nameB = isset($b->name) ? strtolower((string)$b->name) : '';
    return $nameA <=> $nameB;
});

这样排序完之后,你的$retailers数组就会按name属性的字母顺序排列啦!

内容的提问来源于stack exchange,提问作者DBarkz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:47:55