我有一个像这样的php数组: -
([key, value] /*: [string, string] */) =>
这次排序后我得到错误的数据。我按array(3) {
[0]=>
string(4) "9:30"
[1]=>
string(5) "15:00"
[2]=>
string(5) "13:00"
}
函数对其进行排序。
这是我在分拣时间后得到的
array_multisort
这是我的代码
首先我通过使用strtotime函数将时间转换为unix时间,然后像这样排序:
array(3) {
[0]=>
string(5) "03:00"
[1]=>
string(5) "01:00"
[2]=>
string(5) "09:30"
}
如果我打印我的while($row11 = mysqli_fetch_array($hourget))
{
$totlahourdat1[] = strtotime($row11['hours']);
$totlahourdat2[] = $row11['hours'];
}
echo "<pre>";
var_dump($totlahourdat2);
echo "</pre>";
//sort data
array_multisort($totlahourdat1, SORT_DESC);
//var_dump($totlahourdat);
foreach($totlahourdat1 as $time){
$totlahourdat[] = date("h:i",$time);
}
echo "<pre>";
var_dump($totlahourdat);
echo "</pre>";
数组,那么我得到这个:
$totlahourdat1
我的结果应该是:
array(3) {
[0]=>
int(1500535800)
[1]=>
int(1500555600)
[2]=>
int(1500548400)
}
任何帮助都将受到高度赞赏。
答案 0 :(得分:3)
使用natsort($array)
see function definition
答案 1 :(得分:3)
如下所示: -
$time = array(0=>"9:30",1=>"15:00",2=>"13:00");
function timecompare($a,$b)
{
return strtotime($a) < strtotime($b) ? -1: 1;
}
uasort($time ,'timecompare');
print_r(array_values($time));
输出: - https://eval.in/835353
答案 2 :(得分:1)
您可以使用usort()
编写自定义排序功能。
$times = array("9:30", "15:00", "13:00");
usort($times, function ($a, $b) {
$a = strtotime($a);
$b = strtotime($b);
if ($a == $b) {
return 0;
}
return ($a < $b) ? 1 : -1;
});
如果您使用的是PHP7,则可以使用spaceship operator来大大减少排序功能的大小。
$times = array("9:30", "15:00", "13:00");
usort($times, function ($a, $b) {
return strtotime($b) <=> strtotime($a);
});
答案 3 :(得分:1)
你的问题比你想象的要简单得多。你忘了使用正确的订单
按ASC
array_multisort($totlahourdat1, SORT_ASC);
在此处查看演示(https://eval.in/835356)