Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个像这样创建的二维数组:
# i do this in a loop push @{ $list[$array_index++] }, ($x[0], $x[1], $x[2], $y);
我尝试为这个数组编写排序函数,如下所示:
@sorted = sort {$a->[3] > $b->[3]} @list;
但它似乎不起作用。
我想要做的是根据每个“行”的“第三列”的值对“行”进行排序。我该怎么做?
你几乎明白了,但你使用了错误的运算符。排序子例程需要返回三个值之一。对于数值比较,您可以使用 spaceship ( <=>),如果左侧参数小于右侧参数,则返回 -1,如果它们相等,则返回 0,如果左侧参数大于右侧参数,则返回 1。
<=>
所以:
@sorted = sort {$a->[3] <=> $b->[3]} @list;
(请注意,这实际上是第四列,因为数组是零索引的。我假设这就是你想要的。)