【发布时间】:2010-08-25 08:19:31
【问题描述】:
我需要帮助在 php 中从这个数组中排序 [Time] 数据。对于给定的一天,时间不按顺序排列。
有没有办法对此进行排序?谢谢。
Array ( [0] => Array ( )
[1] => Array (
[Server] => server1.name
[Date] => Sun Aug 22 2010
[Set] => db2.bak_lvm
[Time] => 06:00:02
[Duration] => 01:28:12
[Size] => 72.05 GB
[Status] => Succeeded )
[2] => Array ( [Server] => server1.name
[Date] => Sun Aug 22 2010
[Set] => db2.bak_lvm
[Time] => 00:00:03
[Duration] => 01:49:37
[Size] => 187.24 GB
[Status] => Succeeded )
[3] => Array ( [Server] => server1.name
[Date] => Sun Aug 22 2010
[Set] => db3.bak_lvm
[Time] => 23:00:03
[Status] => Unsuccessful )
[4] => Array ( [Server] => server1.name
[Date] => Sun Aug 22 2010
[Set] => db4.bak_lvm
[Time] => 04:00:03
[Duration] => 00:42:36
[Size] => 46.46 GB
[Status] => Succeeded )
到目前为止,这是我的 php 代码:
<?php
$data = array();
$InputFile = file("test.txt");
foreach ($InputFile as $line){
preg_match_all("/([0-9])-([^=]+)=([^;]+);/", $line, $matches, PREG_SET_ORDER);
$LineData = array();
foreach ($matches as $information)
$LineData[$information[2]] = $information[3];
$data[] = $LineData;
}
$keys = array('Server', 'Date','Set','Time','Duration','Size','Status');
echo '<table id="stats"><tr>';
foreach ($keys as $column)
echo '<th>' . $column . '</th>';
echo '</tr>';
$counter=0;
foreach ($data as $row){
$counter ++;
$class = $counter % 2 === 0 ? 'alt1' : 'alt2';
echo '<tr class="' . $class . '">';
foreach ($keys as $column)
if (isset($row[$column])){
echo '<td>' . $row[$column];
} else {
echo '<td>' . '' . '</td>';
}
}
echo '</table>';
print_r($data);
?>
更新:使用比尔建议的修复后的最新排序。 [Time] 是有序的,但也需要在[Date] 内排序
Array ( [0] => Array (
[Server] => server1.name
[Date] => Mon Aug 23 2010
[Set] => db2.bak_lvm
[Time] => 00:00:03
[Duration] => 01:50:24
[Size] => 187.24 GB
[Status] => Succeeded )
[1] => Array ( [Server] => server1.name
[Date] => Mon Aug 23 2010
[Set] => db3.bak_lvm
[Time] => 04:00:02
[Duration] => 00:42:28
[Size] => 46.47 GB
[Status] => Succeeded )
[2] => Array ( [Server] => server1.name
[Date] => Sun Aug 22 2010
[Set] => db3.bak_lvm
[Time] => 04:00:03
[Duration] => 00:42:36
[Size] => 46.46 GB
[Status] => Succeeded )
[3] => Array ( [Server] => server1.name
[Date] => Mon Aug 23 2010
[Set] => db1.bak_lvm
[Time] => 06:00:02
[Duration] => 01:28:24
[Size] => 72.05 GB
[Status] => Succeeded )
[4] => Array ( [Server] => server1.name
[Date] => Sun Aug 22 2010
[Set] => db4.bak_lvm
[Time] => 20:00:03
[Duration] => 04:17:57
[Size] => 426.60 GB
[Status] => Succeeded )
【问题讨论】:
-
您是否从数据库中获取该数据?
-
不,我有一个 perl 脚本生成该数据。也想不通。