Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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中按数组值排序多维数组。数组可能包含重复的值_Php_Sorting_Multidimensional Array - Fatal编程技术网

如何在php中按数组值排序多维数组。数组可能包含重复的值

如何在php中按数组值排序多维数组。数组可能包含重复的值,php,sorting,multidimensional-array,Php,Sorting,Multidimensional Array,我有数组$排行榜。其中包含以下数据 Array ( [0] => Array ( [name] => ABC [time_taken] => 01:46:56 ) [1] => Array ( [name] => DEF [time_taken] => 00:21:54 )

我有数组$排行榜。其中包含以下数据

Array
(
    [0] => Array
        (
            [name] => ABC
            [time_taken] => 01:46:56
        )

    [1] => Array
        (
            [name] => DEF
            [time_taken] => 00:21:54
        )

    [2] => Array
        (
            [name] => MNO
            [time_taken] => 00:34:14
        )

    [3] => Array
        (
            [name] => PQR
            [time_taken] => 00:09:17
        )

    [4] => Array
        (
            [name] => XYZ
            [time_taken] => 00:34:14
        )

    [5] => Array
        (
            [name] => STR
            [time_taken] => 00:34:14
        )

    [6] => Array
        (
            [name] => LOK
            [time_taken] => 17:53:58
        )
}

我试图根据时间对数组进行排序。如果使用ksort时时间值不重复,则其工作正常。但对于重复的时间,它只在记录中显示,从那以后,您可以定义自己的排序函数并使用uksort。 更多信息:

函数aasort(&$array,$key){

$sorter=array();
$ret=array();
重置($array);
foreach($ii=>$va的数组){
$sorter[$ii]=$va[$key];

} asort($sorter);
foreach($ii=>$va的分拣机)
{ $ret[$ii]=$array[$ii]; } $array=$ret;
} aasort($your_数组,“order”);
请试一试

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

usort($leaderboard,'cmp');
函数cmp($a,$b){
if(strottime($a['time\u taked'])==strottime($b['time\u taked']){返回0;}
返回值(strotime($a['time'taked'])
参考

尝试此代码

<?php

$sortArray = array(array('name' => 'ABC',
                        'time_taken' => '01:46:56'),
                    array('name' => 'DEF',
                        'time_taken' => '00:21:54'),
                    array('name' => 'MNO',
                        'time_taken' => '00:34:14'),
                    array('name' => 'PQR',
                        'time_taken' => '00:09:17'),
                    array('name' => 'XYZ',
                        'time_taken' => '00:34:14'),
                    array('name' => 'LOK',
                        'time_taken' => '17:53:58'));
print_r($sortArray);
foreach ($sortArray as $key => $row) {
    $sorting[$key] = $row['time_taken'];
}
array_multisort($sorting, SORT_ASC, $sortArray);
print_r($sortArray);

查看或类似的方法较短的方法是返回
strotime($a['time\u taked'])-strotime($b['time\u taked'])
@Nitin\u aeon它对你有用吗?它显示前两项记录错误。否则就可以了。谢谢@Ajith S。现在可以了。
<?php

$sortArray = array(array('name' => 'ABC',
                        'time_taken' => '01:46:56'),
                    array('name' => 'DEF',
                        'time_taken' => '00:21:54'),
                    array('name' => 'MNO',
                        'time_taken' => '00:34:14'),
                    array('name' => 'PQR',
                        'time_taken' => '00:09:17'),
                    array('name' => 'XYZ',
                        'time_taken' => '00:34:14'),
                    array('name' => 'LOK',
                        'time_taken' => '17:53:58'));
print_r($sortArray);
foreach ($sortArray as $key => $row) {
    $sorting[$key] = $row['time_taken'];
}
array_multisort($sorting, SORT_ASC, $sortArray);
print_r($sortArray);