【问题标题】:How to sort values of array in Laravel如何在 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 的记录。

【问题讨论】:

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

标签: php html css arrays laravel


【解决方案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.
    
    

    【讨论】:

      猜你喜欢
      • 2020-01-09
      • 2020-01-30
      • 2017-08-27
      • 2019-08-17
      • 2020-08-20
      • 2020-12-29
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      相关资源
      最近更新 更多