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

PHP如何对存储对象的数组按is_main字段排序,值为1的优先靠前

解决方法很简单,在遍历拼接姓名前,先用usort对目标教师数组做自定义排序即可,修改后的代码如下:

// 先取出待处理的教师数组
$teachers = $data->class_teacher_arr[$item->id_class];
// 自定义排序规则:is_main为1的排在最前
usort($teachers, function ($a, $b) {
    // 转整型后倒序比较,1的优先级高于0
    return (int)$b->is_main - (int)$a->is_main;
});

$storage = [];
foreach ($teachers as $reference) {
    $storage[] = $reference->firstname . ' ' . $reference->lastname . ' ' . $reference->is_main;
}
echo implode('<br/>', $storage);

说明

  • usort是PHP内置的自定义排序函数,会直接修改传入的数组本身,不需要额外接收返回值
  • 你的数组里is_main是字符串类型的"1"和"0",比较前转成整型可以避免字符串比较出现异常
  • 如果你使用PHP7及以上版本,排序回调也可以用太空船运算符简化书写,效果完全一致:
    usort($teachers, function ($a, $b) {
        return (int)$b->is_main <=> (int)$a->is_main;
    });
    
  • 如果你不想修改原数组的顺序,可以先对数组做浅拷贝再排序:$teachers = (array)$data->class_teacher_arr[$item->id_class];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:06:03