按 Ymd 格式的键对数组进行排序,不带分隔符
我有一个数组,其中键为这种格式的日期。
$arr = array(
"20110805" => "2",
"20100703" => "5",
"20110413" => "3",
"20100805" => "4",
"20100728" => "6",
"20090416" => "7",
"20080424" => "8",
"20110819" => "1",
);
如何按键对这个数组进行排序?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
对于这种格式的日期,按字母顺序比较就可以了。使用 PHP 函数 ksort。
With the dates in that format, an alphabetical comparison will work just fine. Use the PHP function ksort.
稍微复杂一点的解决方案基于 适用于几乎所有日期格式 ="noreferrer">uksort 函数。
,我们定义一个比较两个日期(比较器)的 回调函数:
首先 我们可以使用刚刚定义的函数作为 uksort 中的第二个参数,如下例所示:
因此,该函数会将键视为日期并按升序对数组进行排序(最近的在前)。
请注意,我们可以轻松调整比较器以支持不同的用例。例如,只需将函数的返回表达式替换为以下内容即可完成按日期降序排序(最近的在前):
A slightly more complex solution, which nonetheless works for almost any date format, is based on the uksort function.
First we define a callback function that compares two dates (comparator):
Now we can use the just defined function as the second parameter in uksort, as in the example below:
As a result the function will treat the key as a date and sort the array in ascending order (less recent first).
Note that we can easily tweak the comparator to support different use cases. For example, sorting by date descending (most recent first) can be accomplished by simply replacing the function's return expression with the following:
只需这一行代码:
Just this single line of code: