[php中按字符串值排列的对象的组和顺序数组

问题描述 投票:0回答:1

我有一个看起来像这样的对象数组,请注意,create_time已通过MYSQL对它们进行了排序:

array (size=5)
  0 => 
    object(stdClass)[38]
      public 'vacancy_id' => int 5
      public 'title' => string 'test title' (length=10)
      public 'create_time' => string '2018-10-05 11:15:34' (length=19)
      public 'language_iso' => string 'NL' (length=2)
  1 => 
    object(stdClass)[42]
      public 'vacancy_id' => int 9
      public 'title' => string 'test title 5' (length=12)
      public 'create_time' => string '2018-08-05 11:15:34' (length=19)
      public 'language_iso' => string 'EN' (length=2)
  2 => 
    object(stdClass)[40]
      public 'vacancy_id' => int 7
      public 'title' => string 'test title 3' (length=12)
      public 'create_time' => string '2018-08-05 11:15:34' (length=19)
      public 'language_iso' => string 'FR' (length=2)
  3 => 
    object(stdClass)[39]
      public 'vacancy_id' => int 6
      public 'title' => string 'test title 2' (length=12)
      public 'create_time' => string '2018-06-05 11:15:34' (length=19)
      public 'language_iso' => string 'FR' (length=2)
  4 => 
    object(stdClass)[41]
      public 'vacancy_id' => int 8
      public 'title' => string 'test title 4' (length=12)
      public 'create_time' => string '2018-02-05 11:15:34' (length=19)
      public 'language_iso' => string 'NL' (length=2)

在我的页面上,我正在实现排序功能。 (目前)有4种排序选项:

  • 通过create_time(这也是默认的排序方式,在MySQL中也是如此。我一直想保持这种排序方式。]]
  • 通过NL语言iso
  • 通过FR语言iso
  • 通过EN语言iso
  • 在上面给出的数组示例中,假设我要按“ FR语言iso”进行排序。这意味着我希望我的结果集看起来像这样:

array (size=5)
  0 => 
    object(stdClass)[40]
      public 'vacancy_id' => int 7
      public 'title' => string 'test title 3' (length=12)
      public 'create_time' => string '2018-08-05 11:15:34' (length=19)
      public 'language_iso' => string 'FR' (length=2)
  1 => 
    object(stdClass)[39]
      public 'vacancy_id' => int 6
      public 'title' => string 'test title 2' (length=12)
      public 'create_time' => string '2018-06-05 11:15:34' (length=19)
      public 'language_iso' => string 'FR' (length=2)
  2 => 
    object(stdClass)[38]
      public 'vacancy_id' => int 5
      public 'title' => string 'test title' (length=10)
      public 'create_time' => string '2018-10-05 11:15:34' (length=19)
      public 'language_iso' => string 'NL' (length=2)
  3 => 
    object(stdClass)[42]
      public 'vacancy_id' => int 9
      public 'title' => string 'test title 5' (length=12)
      public 'create_time' => string '2018-08-05 11:15:34' (length=19)
      public 'language_iso' => string 'EN' (length=2)
  4 => 
    object(stdClass)[41]
      public 'vacancy_id' => int 8
      public 'title' => string 'test title 4' (length=12)
      public 'create_time' => string '2018-02-05 11:15:34' (length=19)
      public 'language_iso' => string 'NL' (length=2)

因此,在此示例中,结果必须包含:

  • [language_iso FR位于顶部,但仍在其中的结果,按create_time排序
  • 使用language_iso EN和NL的结果在FR结果下,但也在其中,按create_time排序
  • 我已经在php的usort函数中使用自定义函数完全空白了。

我有一个看起来像这样的对象数组,请注意,它们已经由create_time通过MYSQL进行了排序:array(size = 5)0 => object(stdClass)[38] public'vacancy_id'=> int 5 .. 。

php sorting usort
1个回答
1
投票

您可以(可能应该)完全从MySQL处理此排序要求:

© www.soinside.com 2019 - 2024. All rights reserved.