Smarty将字符串转换为数字

6

我需要进行分割:

{math equation="x/y" x=$x y=$y} // $x = '2', $y = '3'

如何在Smarty中将字符串精确地转换为数字,因为我无法访问CMS的专有代码? 谢谢! 更新:Smarty版本:2.6.18

允许在等式中进行int类型转换(请参见此处:http://smarty-php.googlecode.com/svn/tags/Smarty_2_6_18/libs/plugins/function.math.php),因此您可以简单地执行以下操作`{math equation="(int)x/(int)y" x=$x y=$y}`。 - sofl
@sofl可能有最易读和高效的解决方案。最短的方法是将其乘以1,因为乘以1的数字始终保持不变,而*运算符仅适用于数字,因此尚未是数字的变量会被转换。 {math equation="x/y" x=$x*1 y=$y*1} - jave.web
3个回答

13
如果变量已经被赋值给一个变量,比如 $var,你可以按照以下方式设置变量的类型:
{$converted = settype ($var, 'integer')}

您不必使用$converted值,但如果不指定它,则布尔值将显示在页面上。

或者您可以尝试:

{$variable|intval}

1
第二个解决方案正是我所寻找的。谢谢。 - Robert

5
您可以尝试这个:{$variable|intval},还有这个:((int)$variable)
例如:
$x_new = (int) $x;
$y_new = (int) $y;

在您的情况下:
{math equation="x/y" x=(int)$x y=(int)$y}

3

它可以在不进行修改的情况下运行:

PHP:

$x = '2' ;
$y = '3' ;

$smarty->assign('x',$x);
$smarty->assign('y',$y);

$smarty->display('index.tpl');

Smarty:

{math equation="x/y" x=$x y=$y}

显示的结果是:0.66666666666667 这是在最新版本的Smarty 2.6.28中进行测试的。
因此,您应该考虑尝试升级到最新的Smarty(当然,在备份所有内容以防出现任何问题的情况下),因为旧版本中存在许多错误。
您在问题中也没有写出Smarty显示了什么结果,以及Smarty中x和y变量的值是多少。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接