【问题标题】:Sort array with month name and year in php在php中使用月份名称和年份对数组进行排序
【发布时间】:2018-06-07 07:33:47
【问题描述】:

我有一个像

这样的数组
$ar =['March 2018',
      'March 2018',
      'November 2017',
      'December 2017',
      'January 2018',
      'January 2018',
      'February 2018'
     ];

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

Expected Output: [
     'November 2017',
      'December 2017',
       'January 2018',
      'January 2018',
      'February 2018',
      'March 2018',
      'March 2018'
];

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

【问题讨论】:

  • 按月和年
  • stackoverflow.com/questions/12424968/… - 检查。接受的答案工作
  • 在这个 arrya 中,我有月份和年份,我们只有月份名称以及函数的变量 $a 和 $b 的值
  • 只需将date_parse 替换为strtotime 并将return $monthA["month"] - $monthB["month"]; 替换为return $monthA - $monthB;

标签: php arrays sorting


【解决方案1】:

您可以使用usortstrtotime 将字符串转换为时间。

$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>";

这将导致:

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

【讨论】:

  • $ar = Array ( [0] => 2017 年 11 月 [1] => 2017 年 12 月 [2] => 2018 年 1 月 [3] => 2018 年 1 月 [4] => 2018 年 2 月 [5 ] => 2018 年 3 月 [6] => 2018 年 3 月 [7] => 2017 年 11 月);我无法从这种格式中隐藏,请帮忙
  • 以上工作正常...我从 php 获得的原始输入类似于 $ar = Array ( [0] => 2017 年 11 月 [1] => 2017 年 12 月 [2] => 2018 年 1 月 [3] => 2018 年 1 月 [4] => 2018 年 2 月 [5] => 2018 年 3 月 [6] => 2018 年 3 月 [7] => 2017 年 11 月);
  • 你能用var_export( $ar );代替print_r吗?
  • var_export($ar);结果如下:数组(0 => 'December 2017', 1 => 'December 2017', 2 => 'March 2018', 4 => 'March 2018', 5 => 'February 2018');
  • 告诉我进展如何:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 2012-01-11
  • 1970-01-01
  • 2023-01-01
  • 2012-09-07
  • 1970-01-01
相关资源
最近更新 更多