【问题标题】:how to check whether an element is present in an array using template toolkit如何使用模板工具包检查数组中是否存在元素
【发布时间】:2015-07-17 01:51:17
【问题描述】:

我正在尝试找出数组是否包含模板工具包中的元素。不知道怎么做?谁能帮忙?

my $var ={
myarray => ['a','c','b','d']
}

传递给tt:

现在要检查:

[% IF ( myarray contains 'a') %]
[% END %]

[% IF ( myarray contains 'e') %]
[% END %]

【问题讨论】:

  • 与其他任何地方一样:迭代数组的元素,直到找到它或用完元素。

标签: perl template-toolkit


【解决方案1】:

grep

返回列表中与正则表达式模式匹配的项目的列表。

因此,

[% IF myarray.grep('^e\z').size %]
<p>Hello World</p>
[% END %]

【讨论】:

  • 这对我不起作用,因为它总是返回 true,例如[% IF myarray.grep('Q') %]。有什么想法会出错吗?
  • @user1981275 这真的很奇怪......我确信它在当时有效。使用 [% FOR myarray.grep('Q') %] 会产生预期的行为,但 IF 并没有做我认为应该做的事情。
  • @user1981275 myarray.grep(...) 的结果似乎是一个数组引用,即使它指向一个空数组也是如此。使用.size 消除任何歧义。
【解决方案2】:
myarray = ['17', '177', '166']
value = 16

[% IF myarray.grep('^$value$').size %] # will be true
<p>Hello World</p>
[% END %]

myarray.grep('^$value$') # return ['166']

另一种方式

[% IF myarray.grep('^$value$').0 == value %] # will be false
<p>Hello World</p>
[% END %]

【讨论】:

    猜你喜欢
    • 2017-09-01
    • 2010-12-30
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    相关资源
    最近更新 更多