如何在 Laravel 中对数组的值进行排序

Posted

技术标签:

【中文标题】如何在 Laravel 中对数组的值进行排序【英文标题】:How to sort values of array in Laravel 【发布时间】:2019-10-19 11:10:18 【问题描述】:

我有一个 Laravel 项目,我有一个如下所示的数组。

array:12 [▼
  0 => "آبان 1398"
  1 => "آذر 1398"
  2 => "اردیبهشت 1398"
  3 => "اسفند 1397"
  4 => "بهمن 1397"
  5 => "تیر 1398"
  6 => "خرداد 1398"
  7 => "دی 1397"
  8 => "شهریور 1398"
  9 => "فروردین 1398"
  10 => "مرداد 1398"
  11 => "مهر 1398"
]

如何按值对其进行排序?例如,所有在 1397 之后为 1398 的记录。

【问题讨论】:

How can I sort arrays and data in php?的可能重复 数字后面的其余文本在排序中是否重要?如果不是,它应该只是rsort($array) 是的,它们实际上是按我想按数字排序的文本排序的@Don't Panic 好吧,rsort($array) 会按整个字符串降序排列,所以所有的 1398 都会排在 1397 之前,但是 1398 和 1397 组会按照其余的降序排列字符串。这对你有用吗,还是排序需要更复杂? 不起作用 :( @Don'tPanic 【参考方案1】:

我无法弄清楚如何使用我找到的任何基于语言环境的方法对其进行排序,但我只需提取 usort 中的数字即可使其工作。可能有更好的方法,但这似乎行得通。

usort($array, function($a, $b) 
    return preg_replace('/\D/', '', $b) <=> preg_replace('/\D/', '', $a);
);

【讨论】:

【参考方案2】:

在 Laravel 方式中,你可以使用sortByDesc()

例子:

$collection = collect([5, 3, 1, 2, 4]);

$sorted = $collection->sortByDesc();

dd($sorted->values()->all()); //print sorted values.

【讨论】:

以上是关于如何在 Laravel 中对数组的值进行排序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 4 中对多列使用排序依据?

如何在 Bash 中对数组进行排序

在Ruby中对数组使用冒泡排序方法[关闭]

如何在bash中对逗号分隔的值进行排序?

如何在Vue中对对象数组进行排序和过滤

如何在javascript中对多维数组进行排序