我正在努力使用sortBy()
方法对Eloquent集合进行排序。问题是排序区分大小写,它首先检索大写结果,然后检索小写结果,但我想要实现的是对每个项目进行排序,无论它是大写还是小写。< / p>
答案 0 :(得分:15)
sortBy()
第二个参数允许您设置有关如何处理排序的一些标志。
标志与PHP sort()
本机函数完全相同。
- SORT_REGULAR - 正常比较项目(不要更改类型)
- SORT_NUMERIC - 以数字方式比较商品
- SORT_STRING - 将项目比较为字符串
- SORT_LOCALE_STRING - 根据当前区域设置将项目比较为字符串。它使用可以使用的区域设置 的setlocale()
- SORT_NATURAL - 使用“自然排序”比较项目作为字符串,如natsort()
- SORT_FLAG_CASE - 可以与SORT_STRING或SORT_NATURAL组合(按位或)以不区分大小写的方式对字符串进行排序
来源:php.net
您可以尝试使用$collection->sortBy('key', SORT_NATURAL|SORT_FLAG_CASE)
。
答案 1 :(得分:0)
如果您有一个简单的值列表,并且希望忽略大小写对它们进行排序,则还可以使用sort()
代替sortBy()
并使用如下的回调函数:
$collection->sort(function($a, $b){
return strtolower($a) > strtolower($b);
});