Arrays Perl排序arrayref
因此,我有以下Perl代码:Arrays Perl排序arrayref,arrays,perl,sorting,multidimensional-array,Arrays,Perl,Sorting,Multidimensional Array,因此,我有以下Perl代码: $array->[0][0] = "cc"; $array->[0][1] = "3"; $array->[1][0] = "aaaa"; $array->[1][1] = "2"; $array->[2][0] = "bb"; $array->[2][1] = "1"; 我需要它按字母顺序排序(第二列),以便$array->[0][0]是“aaaa”,而$array->[0][1]是“2” 我一定是在90年代编程101的时候睡
$array->[0][0] = "cc";
$array->[0][1] = "3";
$array->[1][0] = "aaaa";
$array->[1][1] = "2";
$array->[2][0] = "bb";
$array->[2][1] = "1";
我需要它按字母顺序排序(第二列),以便$array->[0][0]是“aaaa”,而$array->[0][1]是“2”
我一定是在90年代编程101的时候睡着了。我花了几个小时在网上搜寻代码和教程,但就是找不到。有人能给我提供一些示例代码吗。谢谢 只需按第一个元素对取消引用的数组进行排序:
$array = [ sort { $a->[0] cmp $b->[0] } @$array ];
或
返回:
[ [ 'aaaa', '2' ],
[ 'bb', '1' ],
[ 'cc', '3' ] ]
如果您可以访问CPAN,请使用(或通过)提供的
sort\u by
功能
。。。或者使用
两者都可以实现同样的效果,但您应该真正尝试获得一个现代版的
List::AllUtils
,因为它可以避免您重新发明许多轮子。或@$array=@$阵列代码>而不是$array=[…@$array]代码>为了避免创建新的阵列太棒了,谢谢@choroba-我用了“”而不是“cmp”。工作完美。谢谢!
[ [ 'aaaa', '2' ],
[ 'bb', '1' ],
[ 'cc', '3' ] ]
use List::AllUtils 'sort_by';
$array = [ sort_by { $_->[0] } @$array ];
use Sort::Key 'keysort';
$array = [ keysort { $_->[0] } @$array ];