按日期对PHP数组表排序

按日期对PHP数组表排序,php,arrays,sorting,Php,Arrays,Sorting,我有一个由PHP使用数组生成的多列HTML表,它从数据库中的一个表中获取数据,该表包含一个条目列表。这5列中有一列是邮戳。我希望HTML表按时间戳排序,不需要任何代码,而是按ID排序(第0列) 以下是我必须排序的代码: $table .= "<tr><td>" . $column0[$i][0] ."</td><td>" . $column1[$i][1] . "</td><td>" . $column2[$i][2] .

我有一个由PHP使用数组生成的多列HTML表,它从数据库中的一个表中获取数据,该表包含一个条目列表。这5列中有一列是邮戳。我希望HTML表按时间戳排序,不需要任何代码,而是按ID排序(第0列)

以下是我必须排序的代码:

$table .= "<tr><td>" . $column0[$i][0] ."</td><td>" . $column1[$i][1] . "</td><td>" . $column2[$i][2] . "</td><td>" . $column3[$i][3] . "</td><td>" . $column4[$i][4] . "</td><td>" . $column5[$i][5] . "</td></tr>";
下面是一个内容示例,我需要按列日期对其进行排序:


id…..编号1…..文本1…..编号2…..文本2…..日期

塔塔公司2014-04-07 16:43:51 图图图图提提2013-04-09 08:27:34 日期:2015-04-08 12:36:18


谢谢大家!

您可以使用
usort()
并通过
strotime()
比较日期。这里有一个例子

$arr = array(
    0 => array('id'=>1,'number1'=>'75','text1'=>'toto','number2'=>'58','text2'=>'tata','date'=>'2014-04-07 16:43:51',),
    1 => array('id'=>2,'number1'=>'34','text1'=>'tutu','number2'=>'07','text2'=>'titi','date'=>'2013-04-09 08:27:34',),
    2 => array('id'=>3,'number1'=>'83','text1'=>'tyty','number2'=>'53','text2'=>'tete','date'=>'2015-04-08 12:36:18',),
);

function sort_by_date($a, $b) {
    $a = strtotime($a['date']);
    $b = strtotime($b['date']);
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

usort($arr, 'sort_by_date');

$keys = array_keys(current($arr));

$html = '<table border="1"><tr>';
foreach($keys as $key){
    $html .= '<th>'.$key.'</th>';
}
$html .= '</tr>';

foreach($arr as $value){
    $html .= '<tr>';
    foreach($value as $val){
        $html .= '<td>'.$val.'</td>';
    }
    $html .= '</tr>';
}
$html .= '</table>';
echo $html;
$arr=array(
0=>array('id'=>1、'number1'=>'75'、'text1'=>'toto'、'number2'=>'58'、'text2'=>'tata'、'date'=>'2014-04-07 16:43:51',),
1=>数组('id'=>2,'number1'=>'34','text1'=>'tutu','number2'=>'07','text2'=>'titi','date'=>'2013-04-09 08:27:34',),
2=>数组('id'=>3,'number1'=>'83','text1'=>'tyty','number2'=>'53','text2'=>'tete','date'=>'2015-04-08 12:36:18',),
);
函数按日期排序($a,$b){
$a=strottime($a['date']);
$b=标准时间($b['date']);
如果($a=$b){
返回0;
}
回报率($a<$b)?-1:1;
}
usort($arr,‘按日期排序’);
$keys=数组_键(当前($arr));
$html='';
foreach($key作为$key){
$html.=''.$key.';
}
$html.='';
foreach($arr作为$value){
$html.='';
foreach(价值为$val){
$html.=''.$val';
}
$html.='';
}
$html.='';
echo$html;

输出:


发布您的完整代码!如果您是从数据库获取数据,为什么不在选择数据时对其排序,而不是在php中排序?例如,
选择。。。按邮戳订购
您还需要什么?剩下的只是检查表是否为空,这是关于表本身的唯一部分。只有一个
return$表之后。事实上,我正在修改一个我没有创建的文件,只是为了添加排序,并且我没有看到任何可以更改为“按日期戳排序”的SQL查询。@Orphal我们需要查看数组结构。你为什么不贴出来?除了燃料,你还能开车吗?谢谢你的回复。我的问题是数据不是用数组('id'=>0=>1,'number1'=>75','text1'=>'toto','number2'=>'58','text2'=>'tata','date'=>'2014-04-07 16:43:51',)来完成的,
它将数据保存在一个数据库中,该数据库中不时填充新的条目。数组并不像前几行那样硬编码。那么,如何利用我所拥有的(第一篇文章,第一行代码)调整您所做的工作呢?我对PHP完全是新手……好吧,今天一位朋友使用了您的代码,并实现了可行的解决方案。基本上,他只是使用了你的
函数sort_by_date($a,$b){…}
usort($column,'sort_by_date')就是这样。谢谢你的帮助!
$arr = array(
    0 => array('id'=>1,'number1'=>'75','text1'=>'toto','number2'=>'58','text2'=>'tata','date'=>'2014-04-07 16:43:51',),
    1 => array('id'=>2,'number1'=>'34','text1'=>'tutu','number2'=>'07','text2'=>'titi','date'=>'2013-04-09 08:27:34',),
    2 => array('id'=>3,'number1'=>'83','text1'=>'tyty','number2'=>'53','text2'=>'tete','date'=>'2015-04-08 12:36:18',),
);

function sort_by_date($a, $b) {
    $a = strtotime($a['date']);
    $b = strtotime($b['date']);
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

usort($arr, 'sort_by_date');

$keys = array_keys(current($arr));

$html = '<table border="1"><tr>';
foreach($keys as $key){
    $html .= '<th>'.$key.'</th>';
}
$html .= '</tr>';

foreach($arr as $value){
    $html .= '<tr>';
    foreach($value as $val){
        $html .= '<td>'.$val.'</td>';
    }
    $html .= '</tr>';
}
$html .= '</table>';
echo $html;