Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php sort()多维数组,其值在_Php_Arrays_Sorting_Multidimensional Array - Fatal编程技术网

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);

?>