在php中对带有月份名称和年份的数组进行排序

sai*_*tta 2 php arrays sorting

我有一个像这样的数组

$ar =['March 2018',
      'March 2018',
      'November 2017',
      'December 2017',
      'January 2018',
      'January 2018',
      'February 2018'
     ];
Run Code Online (Sandbox Code Playgroud)

我想按月份和年份对这个数组进行排序。但我无法对这个数组进行排序。

Expected Output: [
     'November 2017',
      'December 2017',
       'January 2018',
      'January 2018',
      'February 2018',
      'March 2018',
      'March 2018'
];
Run Code Online (Sandbox Code Playgroud)

尝试过诸如usort(), uksort()...之类的功能,但它不起作用请帮我解决这个问题

Edd*_*die 5

您可以使用usort和 usestrtotime将字符串转换为时间。

$ar = ['March 2018',
  'March 2018',
  'November 2017',
  'December 2017',
  'January 2018',
  'January 2018',
  'February 2018'
];

usort( $ar , function($a, $b){
    $a = strtotime($a);
    $b = strtotime($b);
    return $a - $b;
});

echo "<pre>";
print_r( $ar );
echo "</pre>";
Run Code Online (Sandbox Code Playgroud)

这将导致:

Array
(
    [0] => November 2017
    [1] => December 2017
    [2] => January 2018
    [3] => January 2018
    [4] => February 2018
    [5] => March 2018
    [6] => March 2018
)
Run Code Online (Sandbox Code Playgroud)