【发布时间】:2019-06-12 08:22:50
【问题描述】:
我有一个 html 表格,显示不同类型的中断的中断开始和结束时间。目前,我正在按中断类型的顺序对中断进行排序,但我希望能够按最早到最晚的开始时间对它们进行排序。每个开始和结束的时间已经按顺序排列,但我试图让它们按顺序排列,无论类型如何。我知道按值排序,您通常使用某种值比较,例如“sort { $h{$a} $h{$b} } keys(%h);”
Currently they sort like:
1 | phone | 00:00:00 | 04:08:03
2 | phone | 14:26:03 | 18:00:00
3 | television | 12:34:19 | 12:34:25
But it should be like:
1 | phone | 00:00:00 | 04:08:03
2 | television | 12:34:19 | 12:34:25
3 | phone | 14:26:03 | 18:00:00
这是我的代码。
my %outages;
my @outage_times = qw(start end);
my %outage_reasons = (
'tv' => 'television',
'p' => 'phone'
);
foreach my $outage_reason (values %outage_reasons) {
foreach my $outage (@outage_times) {
$outages{$outage_reason}{$outage} = [];
}
}
$outages{television}{start} = ['00:00:00', '14:26:03'];
$outages{television}{end} = ['04:08:03', '18:00:00'];
$outages{phone}{start} = ['12:32:02'];
$outages{phone}{end} = ['12:38:09'];
my $outage_number = 1;
foreach my $outage (sort keys %outages){
for my $i (0 .. scalar (@{$outages{$outage}{start}})-1) {
my $outage_start_time = $outages{$outage}{start}[$i];
my $outage_end_time = $outages{$outage}{end}[$i];
my $row_html = "<tr><td>$outage_number</td><td>$outage</td>";
$row_html .= "<td>$outage_start_time</td>";
$row_html .= "<td>$outage_end_time</td></tr>";
$outage_number += 1;
}
}
【问题讨论】: