如何在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);