4

我是Smarty的新手。我想对 smarty 中的数组元素进行 mod 操作。以下是我尝试实现的代码片段:

{if {$que_seq_no}.{$sub_ques_no+1} % 10 == 1}

你能帮我纠正一下吗?提前致谢。

4

2 回答 2

2

您正在使用可接受的语法进行 mod 操作。我很确定您对变量使用了不正确的语法{$que_seq_no}.{$sub_ques_no+1}。你试过$que_seq_no[$sub_ques_no+1]吗?

于 2013-05-31T03:36:28.747 回答
2

回答问题标题

模运算符 is%并且也有alternation mod
有关 smarty 中公认的限定符的更多信息,请参阅文档:http ://www.smarty.net/docsv2/en/language.function.if

回答你的问题

如您所知,您的模运算符是正确的。
从我可以从您的语法中猜到,您可能正在尝试通过数组索引访问数组的值。

要访问数组项,您有 2 种可能性:

  1. 通过数组键访问 - 语法:$arrayVariable.key
  2. 通过数组索引访问 - 语法:($arrayVariable[index]索引是一个整数)
    所以在你的情况下:$que_seq_no[$sub_ques_no+1]

如果您尝试访问对象属性:
它类似于通过数组键访问,但运算符是->这样的语法是:$objectVariable->propertyName

有关这方面的更多信息,请参阅 smarty 文档:http ://www.smarty.net/docsv2/en/language.variables.tpl

什么可能让你感到困惑

{}我认为您对(花括号) 的使用感到有些困惑
-它们用于包装整个smarty 表达式-因此这意味着它们不能包含任何其他{or }
取自 smarty docs 的一个漂亮例子是:

{if $name == 'Fred' || $name == 'Wilma'}
   ...
{/if}
于 2015-08-31T18:44:48.130 回答