如何在Laravel中从索引不同的对象数组中提取数值最高的2项
Laravel 保留对象数值最高N个字段实现方案
直接使用Laravel内置的Collection集合类处理即可,是框架原生支持的最优方案,无需引入额外依赖,代码可读性和可维护性都更高。
完整实现代码
// 示例原始JSON输入,你也可以直接传入已有的关联数组 $rawData = '{"res1":158,"res2":97,"res3":99,"res4":103}'; // 第一步:将JSON转为关联数组(如果原始数据已是数组可跳过此步) $originArr = json_decode($rawData, true); // 第二步:通过集合链式操作完成需求 $res = collect($originArr) ->sortDesc() // 按值从大到小降序排序,自动保留原有键名 ->take(2) // 取排序后的前2个元素,修改数值可调整保留的字段数 ->toJson(); // 按需可改为toArray()得到数组格式结果
执行后输出的$res就是你需要的结果:
{"res1":158,"res4":103}
方案优势
- 支持动态字段的输入场景,不管你原始对象的字段名、字段数量怎么变,都能正确执行
- 所有逻辑都是Laravel原生封装的方法,符合框架编码规范,不需要自己手写排序逻辑,避免出现键值对应错误
- 后续调整保留的字段数量只需要修改
take()方法的入参即可,扩展性强
内容的提问来源于stack exchange,提问作者koyajav567
相关产品推荐
相关产品推荐

