这里的问题是你如何使用它。
如果在 PHP 中分配这个变量:
$smarty->assign('var',12345);
并使用此代码(一个额外的 if 以确保它正常工作):
{if $var|count_characters == 4}
it's 4
{elseif $var|count_characters == 5}
it's 5
{/if}
你会得到输出it's 5
- 应该是这样。
如果你没有在 PHP 中分配任何东西,而是在 Smarty 中分配它,如下代码所示:
{assign var="var" value="12345"}
{if $var|count_characters == 4}
it's 4
{elseif $var|count_characters == 5}
it's 5
{/if}
你会得到it's 5
- 它应该是。
正如@MarkBaker 在您使用12345|count_characters
代码时提到的那样,代码在按位运算符处进行评估,count_characters
这里的函数实际上不是一个函数 - 它从未启动过,您可以在此处编写任何您想要的内容,例如:
{if 12345|count_charact87172368716832ers == 4}
it's 4
{/if}
it's 4
即使显然没有count_charact87172368716832ers
修饰符,您也会得到。
要使其按您的意愿工作,您应该在 PHP 中分配变量(如我在第一个代码中所示)或在 Smarty 中分配变量(如我在第二个代码中所示)或count_characters
在字符串而不是 int 上使用修饰符:
{if '12345'|count_characters == 4}
it's 4
{elseif '12345'|count_characters == 5}
it's 5
{/if}
此代码将按预期工作 - 你会得到it's 5