具有简单的哈希,用于填充选择选项。我想在价值上订购,但我无法打印钥匙......
[%- FOREACH val IN myList.values.sort -%]<option value="[%- myList.$val.key -%]">[%- val -%]</option>[% END %]
KEY无效.....我试了很多东西,但是没有用。
以便选择选项如下:
<option value="">roger1</option>
所有键和值都是唯一的。
如果我从散列中知道了值,我怎样才能获得密钥?
答案 0 :(得分:3)
您可以使用pairs
vmethod获取键/值对的列表,然后您可以按照所需的顺序对其进行排序。
[% myList = { first => 'ZZZ', second => 'YYY', third => 'XXX' };
FOREACH option IN myList.pairs.sort('value') -%]
<option value="[% option.key %]">[% option.value %]</option>
[% END -%]
输出:
<option value="third">XXX</option>
<option value="second">YYY</option>
<option value="first">ZZZ</option>
答案 1 :(得分:0)
通过按值实现自定义排序,这很容易做到:
my @keys = sort { $hash{$a} cmp $hash{$b} } keys(%hash);
不幸的是,查看TT中提供的hash virtual methods,我认为没有办法在您的模板中完全执行此操作。您需要先通过上面的sort
或通过反转哈希来对代码中的数据进行一点按摩:
my %inverted = reverse(%hash);
如果您反转哈希值,则可以使用TT pairs方法一次性获取键/值对的排序列表。