【问题标题】:Sorting Array Perl (part two)排序数组 Perl(第二部分)
【发布时间】:2015-05-19 04:44:43
【问题描述】:

好的,所以我得到了一些帮助,但还需要一些帮助,我对如何按字母顺序对数组进行排序非常了解。但现在我需要对它进行数字排序。可能是 "my @test = (sort {items{$a}} <=> {items{$b}} @menu)"

附近的语法错误

如果它是一个带有两个键的哈希,我会有一个解决方案,但是由于这个数组包含三个类别,这对我来说变得很困难。显然,我渴望学习,尽可能寻求帮助和解释。 谢谢!

my @test = (sort {price{$a} <=> {price{$b}} @menu)

【问题讨论】:

  • 另外,如果有人能指出一些解释它的阅读材料,我将不胜感激,因为我在这个主题上与谷歌的运气似乎已经筋疲力尽了。
  • ad google,尝试:perl 按多个值对哈希数组进行排序并检查第一个 NN 链接.. ;)

标签: arrays perl sorting


【解决方案1】:

问题是item{$a}。看起来您正在尝试从哈希 item 中获取一些值,这当然不是哈希。

my @test = sort { $a->{price} <=> $b->{price} } @menu;

您也可以根据多个字段进行排序

my @test = sort {
           $a->{price} <=> $b->{price}
        or $a->{color} cmp $b->{color}
        or $b->{items} cmp $a->{items} # note reverse order
    } @menu;

【讨论】:

  • 老实说,这只是普通的 annyoing。我向上帝发誓,我之前已经尝试过价格的确切语法,但它没有返回正确的结果。不过现在可以了。。谢谢!
  • @pubba 注意cmp(字符串)和&lt;=&gt;(数字)之间的区别。
【解决方案2】:

这是按奖品排序的方法:

my @test = sort { $a->{prize} <=> $b->{prize} } @menu;

按降序,只需更改 $a 和 $b:

my @test = sort { $b->{prize} <=> $a->{prize} } @menu;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    相关资源
    最近更新 更多