Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String Drupal8细枝-将字符串转换为整数_String_Int_Twig_Drupal Theming_Drupal 8 - Fatal编程技术网

String Drupal8细枝-将字符串转换为整数

String Drupal8细枝-将字符串转换为整数,string,int,twig,drupal-theming,drupal-8,String,Int,Twig,Drupal Theming,Drupal 8,我刚开始在drupal8中使用twig。我试图用视图计算两个数值变量之间的差异 field_goals_for: 24 field_goals_against: 3 field_goals_difference: should return 21 but returns 1 我已经尝试过类似的东西(有数字格式和没有数字格式): 我假设问题是这两个变量是字符串而不是int 有一种方法可以将它们转换为int并使用twig返回正确的结果?如果没有,您是否有其他解决方案可供建议 编辑: 我尝试将这两个

我刚开始在drupal8中使用twig。我试图用视图计算两个数值变量之间的差异

field_goals_for: 24
field_goals_against: 3
field_goals_difference: should return 21 but returns 1
我已经尝试过类似的东西(有数字格式和没有数字格式):

我假设问题是这两个变量是字符串而不是int

有一种方法可以将它们转换为int并使用twig返回正确的结果?如果没有,您是否有其他解决方案可供建议

编辑: 我尝试将这两个值相加并乘以:

{{ field_goals_for }} = 24
{{ field_goals_against }} = 3
{{ field_goals_for - field_goals_against }} = 0
{{ field_goals_for + field_goals_against }} = 2
{{ field_goals_for * field_goals_against }} = 1
为什么它们被认为等于1而不是它们的实际值

编辑2:我发现了问题。要使用的值是字段\目标\值,而不是字段\目标\值。不幸的是,我找不到在同一文本字段中同时使用这两种格式的方法。

过滤器设置数字格式。您可以使用附加参数控制小数位数、小数点和千位分隔符

例如:

{% set diff = field_goals_for - field_goals_against %}
{{ diff|number_format(2,',') }}
将打印:

21,00
检查一个工作示例


希望此帮助

Twig 1.5中添加了数字\u格式过滤器

请检查你的小枝版本

(很抱歉,这最初是一个评论,但由于我还不能发表评论,所以我写了一个答案)

试试看

{{ diff["#markup"]|number_format(2,',') }}

它对我很有用。

我也遇到了类似的问题——我必须添加“#标记”才能让它工作

 {{items[0].content['#markup']|number_format/5*100}}
试一试


剥下标签是我的诀窍

{% set diff = field_goals_for|striptags - field_goals_against|striptags %}
{{ diff }}

您是否尝试过使用
intval
而不是
number\u格式
?您不需要转换它们,正如所见,使用
number\u格式
是导致数字被视为字符串的原因。我尝试了两种解决方案,但均无效。我认为这个问题与drupal有关,但我不明白是怎么回事。{{field_goals_for}返回24,{{{field_goals_for | intval}返回0谢谢,您的解决方案在twig上非常有效,但在我的drupal环境中却不行。我认为问题与此有关,但我不明白它为什么不能正常工作。hi@ciaobetty非常奇怪,请使用字符串变量检查示例,并检查相同的结果。尝试在差异之前检查两个变量的实际值,以排除值不同而不是配置。不幸的是,我已经检查了它们,我在减法之前打印了{field_goals_for}}和{{field_goals_反对}},它们返回24和3,并存储在一个数字(整数)中drupal字段。我有1.24.0版
{{ diff.__toString|number_format(2,',') }}
{% set diff = field_goals_for|striptags - field_goals_against|striptags %}
{{ diff }}