树枝模板中的Intval

时间:2014-06-30 11:18:42

标签: symfony twig

问题非常严重。

我有一个带整数键的数组,参数是字符串。我想通过使用该参数获取该数组的元素。

如何进入intval - (int)"32" {{ variable }}的{​​{1}}的Twig variable == (string) "32";

3 个答案:

答案 0 :(得分:15)

树枝上有过滤器。其中之一是:

http://twig.sensiolabs.org/doc/filters/number_format.html

{{ variable|number_format }}

如果你正在对一个字符串进行数学运算,那么无论如何它都会自动转换为整数!

答案 1 :(得分:5)

您可以使用变量作为键来访问数组的值,如下所示:myArray[myKey]。数组键是整数(例如32)还是相应的字符串("32"),或者myKey是整数还是字符串并不重要。所有这些组合都应该有效(see TwigFiddle):

{% set myArray = {
    1:   'first',
    '2': 'second',
} %}

{% set keyOneInt = 1 %}
{% set keyOneStr = '1' %}
{% set keyTwoInt = 2 %}
{% set keyTwoStr = '2' %}

{# These all print 'first' #}
{{ myArray.1 }}
{{ myArray[1] }}
{{ myArray['1'] }}
{{ myArray[keyOneInt] }}
{{ myArray[keyOneStr] }}

{# These all print 'second' #}
{{ myArray.2 }}
{{ myArray[2] }}
{{ myArray['2'] }}
{{ myArray[keyTwoInt] }}
{{ myArray[keyTwoStr] }}

在上面代码的第三行,字符串键'2'实际上转换为整数2,如PHP's documentation of arrays州:

  

包含有效十进制整数的字符串,除非数字是   前面带有 + 符号,将被强制转换为整数类型。例如。钥匙   " 8" 实际上将存储在 8 下。另一方面" 08" 不会   cast,因为它不是有效的十进制整数。

如果由于某种原因需要整数,可以通过对其执行数学运算将字符串转换为int - 例如variable * 1(= "32" * 1)或variable + 0(= "32" + 0)。

答案 2 :(得分:0)

如果您只想获得一个整数,以前的解决方案都不是好的。 format_number 向字符串添加十进制。这个解决方案可能是最糟糕的。

对我有用的是

添加自定义 twig function filter 就像:

public function getFilters(): array
{
    return [
        new TwigFilter('force_to_int', fn ($value) => intval($value))
    ];
}

像这样使用:

{{ str_to_convert|force_to_int }}