You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于数组中的日期值对PHP数组元素进行排序?

PHP 按数组元素内的日期字段排序解决方案

你现有代码不生效的核心原因是:数组内的每个元素同时包含姓名和日期两个部分,直接将完整元素传入strtotime()无法正确解析得到对应时间戳,因此排序逻辑无法正常运行。

根据你给出的数组结构,每个元素都是[姓名] => [日期]格式的字符串,只需要在排序回调中先提取出日期部分再做比较即可,参考实现代码如下:

function date_sort($a, $b) {
    // 提取=>右侧的日期部分,trim去除前后多余空格
    $dateA = trim(explode('=>', $a)[1]);
    $dateB = trim(explode('=>', $b)[1]);
    // 转换为时间戳后比较大小
    return strtotime($dateA) - strtotime($dateB);
}

// 测试用数组
$main_Array = [
    'Luke Karizo => Jul 18 2021',
    'telse Elarazo => Aug 15 2021',
    'Sarath S => Jul 08 2021'
];

usort($main_Array, "date_sort");
print_r($main_Array);

上述代码运行后输出结果和你预期一致:

Array
(
    [0] => Sarath S => Jul 08 2021
    [1] => Luke Karizo => Jul 18 2021
    [2] => telse Elarazo => Aug 15 2021
)

如果你使用的是 PHP 7.0 及以上版本,还可以用更简洁的匿名函数+太空船运算符写法:

usort($main_Array, function($a, $b) {
    $dateA = strtotime(trim(explode('=>', $a)[1]));
    $dateB = strtotime(trim(explode('=>', $b)[1]));
    return $dateA <=> $dateB;
});

如果你给出的数组是书写笔误,实际是键为姓名、值为日期的二维数组,可以使用对应适配的排序逻辑:

// 二维数组示例
$main_Array = [
    ['Luke Karizo' => 'Jul 18 2021'],
    ['telse Elarazo' => 'Aug 15 2021'],
    ['Sarath S' => 'Jul 08 2021']
];

usort($main_Array, function($a, $b) {
    $dateA = strtotime(current($a));
    $dateB = strtotime(current($b));
    return $dateA <=> $dateB;
});

内容的提问来源于stack exchange,提问作者Hybrid Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 01:06:03