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

如何对Laravel Collection按值而非按键排序?

如何在Laravel中对Collection按值排序

嘿,这个需求很常见!针对你手里的这个键值对集合,Laravel提供了几个非常直观的方法来实现按值(而非键)排序,不管是升序还是降序都能轻松搞定,下面给你一步步拆解:

1. 升序排序(从小到大)

用sortBy()方法,你只需要传入一个闭包,返回每个元素的值即可。因为我们要按值排序,所以闭包直接返回$value就好:

// 假设你的集合变量是$collection
$sortedAsc = $collection->sortBy(function ($value, $key) {
    return $value;
});

// 更简洁的箭头函数写法(PHP 7.4+支持)
$sortedAsc = $collection->sortBy(fn($value) => $value);

执行后,你会得到按值升序排列的集合,原键会被保留:

结果:['cookking vuurschaal palma' => 1, 'pizza' => 2]

如果不需要保留原键,想把键重置为连续的数字索引,只需要链式调用values():

$sortedAscWithNewKeys = $collection->sortBy(fn($value) => $value)->values();

2. 降序排序(从大到小)

如果要按值从高到低排序,用sortByDesc()方法就好,用法和sortBy()完全一致:

$sortedDesc = $collection->sortByDesc(fn($value) => $value);

执行后的结果会是:

结果:['pizza' => 2, 'cookking vuurschaal palma' => 1]

同样,需要重置键的话,加上->values()就行。

额外小技巧:用sort()快速排序

还有一个更简洁的方法sort(),它默认按值升序排序,不过会直接重置键:

// 升序
$sorted = $collection->sort();

// 降序的话,传入SORT_DESC参数
$sortedDesc = $collection->sort(SORT_DESC);

这个方法适合不需要保留原键的场景,代码更短。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 10:02:38