我有一个项目(衬衫),可以是一个不同的尺寸范围的集合。尺寸的顺序应如下所示。XS1, XS3, ... S1, S3, ... M1, M3, ... L1, L3, ... XL1, XL3, ... 2XL1, ... 3XL1, ...
现在我进行排序的时候$items->sortBy('size')
它将结果输出为2XL#, 3XL#, L#, M#, S# XL#, XS#
这是有意义的,因为这是基于字母和数字顺序的自然排序。
写一个回调函数来按我需要的特定顺序排序的最好方法是什么?
1条答案
按热度按时间yeotifhr1#
Illuminate Collection类的各种排序方法采用一个可选的callable作为参数,这样您就可以提供自己的排序机制。使用这个方法,你可以定义一个不同大小的数组,按照你希望它们出现的顺序,然后使用目标字符串在该数组中的位置作为你的排序比较器:
这产生:
或者(稍微更有性能),你可以让你的排序数组关联键作为大小,值作为排序顺序: