使用PHP对数组中格式为HH:mm的字符串进行排序

时间:2018-02-20 18:28:44

标签: php arrays sorting usort

我有一个像这样的数组:

$x = array(
    array(
        'inicio' => '09:00',
        'fim' => '09:30'
    ),
    array(
        'inicio' => '09:30',
        'fim' => '10:00'
    ),
    array(
        'inicio' => '08:30',
        'fim' => '09:00'
    ),
    array(
        'inicio' => '11:30',
        'fim' => '12:00'
    )
);

我必须通过inicio字段对此进行封装。我正在尝试使用usort liket,但结果只得到1:

$y = usort($x, function($a, $b) {
    return (explode(':', $b['inicio'])[0]*60 + explode(':', $b['inicio'])[1]) - (explode(':', $a['inicio'])[0]*60 + explode(':', $a['inicio'])[1]);
});

print_r($y);

我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

第1,usort不返回数组,它已按顺序排序。 Doc说:

  

成功时返回TRUE,失败时返回FALSE。

第二,你可以比较inicio字段

usort($x, function ($a, $b) { return strcmp($a['inicio'], $b['inicio']); });
print_r($x);