Php sort()多维数组,其值在
我要排序多维数组。但我必须先将格式值更改为排序,然后才能在开始时返回格式 这是我的数组(多维) 例如,可以帮助您回答,我知道如何对数组时间进行排序并重新获取格式: 这是我的阵列(单个) 用于对此进行排序的函数Php sort()多维数组,其值在,php,arrays,sorting,multidimensional-array,Php,Arrays,Sorting,Multidimensional Array,我要排序多维数组。但我必须先将格式值更改为排序,然后才能在开始时返回格式 这是我的数组(多维) 例如,可以帮助您回答,我知道如何对数组时间进行排序并重新获取格式: 这是我的阵列(单个) 用于对此进行排序的函数 $rep = str_replace(':','', str_replace('.','', $db2)); echo arr($rep); function arr($array) { $return = array(); foreach($array as $row)
$rep = str_replace(':','', str_replace('.','', $db2));
echo arr($rep);
function arr($array) {
$return = array();
foreach($array as $row) {
$return[] = (int)$row;
sort($return);
}
return $return;
}
输出将为
$db2 = ['00:01:13.145','00:02:19.145',
'00:02:13.235','00:01:44.020',
'00:02:25.035','00:01:11.031'];
数组([0]=>111031[1]=>113145[2]=>144020[3]=>213235[4]=>219145[5]=>225035)
其次,我知道如何再次获取格式,例如:
$int = 111031;
$str = substr_replace(substr_replace($int,".",-3,-3),":",-6,-6);
echo substr_replace($str,'00:0',-9,-9);
从(int)111031
输出将是00:01:11.031
请帮我解决这个问题这应该适合您: 在这里,我们只是使用自己的自定义比较函数。在这个函数中,我们首先用一个点来表示时间,所以我们分别得到时间和毫秒。在此之后,我们将时间转换为时间戳,并将其乘以1000,这样我们可以将毫秒添加到时间戳中 通过这个,我们将时间转换为毫秒,我们可以简单地比较数字并按毫秒排序 代码:
哇,谢谢你的回答,它是如此简单和伟大。我的例子太复杂了哈哈哈对不起:D
$int = 111031;
$str = substr_replace(substr_replace($int,".",-3,-3),":",-6,-6);
echo substr_replace($str,'00:0',-9,-9);
<?php
$db = [
['1','00:01:13.145'], ['2','00:02:19.145'],
['3','00:02:13.235'], ['4','00:01:44.020'],
['5','00:02:25.035'], ['6','00:01:11.031']
];
usort($db, function($a, $b){
list($timeOne, $millisecondsOne) = explode(".", $a[1]);
list($timeTwo, $millisecondsTwo) = explode(".", $b[1]);
$millisecondsOne = strtotime($timeOne) * 1000 + $millisecondsOne;
$millisecondsTwo = strtotime($timeTwo) * 1000 + $millisecondsTwo;
if($millisecondsOne == $millisecondsTwo)
return 0;
return $millisecondsOne > $millisecondsTwo ? 1 : -1;
});
print_r($db);
?>