首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按偶数元素排序索引数组

按偶数元素排序索引数组
EN

Stack Overflow用户
提问于 2014-05-01 20:10:23
回答 2查看 109关注 0票数 0

我试图在PHP中对数组进行排序。数组是偶数索引和时间(MM:SS.XX)中的名称。

代码语言:javascript
复制
Array ( [0] => Emma Hogan [1] => 09:12.55 [2] => Bob Harrison [3] => 12:00.15 [4] => Dave Haenze [5] => 10:00.98 [6] => Tau Newman [7] => 07:05.15 [8] => Cai Jones [9] => 44:15.59 )

我想要做的是抓取所有其他元素(时间),并按最短的时间对数组进行排序。我的代码是这样的:

代码语言:javascript
复制
for($i=1;$i<$arrlength;$i+=2) {
    $j = $i;
    while (($j>0)&&($array[($j-2)] > $array[$j])){
        $temp = $array[$j];
        $array[$j] = $array[($j-2)];
        $array[($j-2)] = $temp;
        $temp2 = $array[($j+1)];
        $array[($j+1)] = $array[($j-1)];
        $array[($j-1)] = $temp;
        $j = $j - 2;
    }
}

但是,它返回的输出如下所示:

代码语言:javascript
复制
Emma Hogan
07:05.15
07:05.15
09:12.55
Bob Harrison
10:00.98
10:00.98
12:00.15
Dave Haenze
44:15.59

我做错了什么?我需要改变什么才能使它正确排序?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-01 20:26:05

您已经表明可以更改数组格式。如果是这样,请考虑以下几点:

代码语言:javascript
复制
$array = array ( 'Emma Hogan' => '09:12.55' );
asort($array);  //or arsort()

或者:

代码语言:javascript
复制
$array = array ( '09:12.55' => 'Emma Hogan' );
ksort($array);  //or krsort()
票数 0
EN

Stack Overflow用户

发布于 2014-05-01 20:20:02

正如您所看到的,您的数组布局对于您想要完成的任务没有什么意义。我最好先修复这个问题,而不是低头尝试处理糟糕的数据结构。即:

代码语言:javascript
复制
$tmp = array();
for($i=0; $i<count($srcArray); $i+=2) {
   $tmp[$srcArray[i]] = $srcArray[$i+1];
}

然后可以使用$tmp乌斯波特()进行排序。或者更好的是,您可以将您的时间转换为数字值,然后只需要用户普通的排序()来完成这项工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23415757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档