我需要测试两个变量是否相等。但一个是字符串格式,另一个是数字。
所以,我尝试在文本中转换变量,但没有成功。
有你的想法吗?
答案 0 :(得分:2)
尝试使用{$ number | string_format:“%。2f”}将这两个数字转换为字符串并进行比较。 或{$ number | string_format:“%d”}如果是整数,而不是浮点数。
我没有看到smarty显式地将sting转换为整数的方法,所以你应该将两者都转换为字符串。
如果不起作用,请发布您的代码。也许问题在于另一条线。
答案 1 :(得分:0)
我有同样的问题,因为php自动转换数组键(字符串)到整数,基于它们看起来像整数(这实际上是一个记录的“功能”!)然后搞乱我在Smarty中的比较。直截了当且非常糟糕的方法是:
{php}$this->assign('STR', strval($this->get_template_vars('NUM')));{/php}
如果您需要在代码中更频繁地使用它,请考虑编写自定义的Smarty {strval}。
答案 2 :(得分:0)
您可以使用settype将整数转换为字符串,然后比较它们......
$var1 = 10;
$var2 = "10";
{$converted = settype($var2, 'integer')}
OR
{$converted = settype($var1, 'string')}
这会给你相同类型的变种。拥有$ converted变量的唯一原因是因为如果未分配,则返回的bool将出现在页面上。