symfony Twig模板中的Intval

cx6n0qe3  于 2023-05-18  发布在  其他
关注(0)|答案(4)|浏览(182)

问题很短。
我得到了一个整数键数组,参数是字符串.我想用这个参数得到数组的元素。
如何在树枝intval - (int)"32"{{ variable }}variable == (string) "32";

jdgnovmf

jdgnovmf1#

有过滤器在树枝。其中之一是这样的:
https://twig.symfony.com/doc/2.x/filters/number_format.html

{{ variable|number_format }}

但是,如果你正在对字符串进行数学运算,它将自动转换为整数!

hc2pp10m

hc2pp10m2#

你可以使用一个变量作为键来访问数组的值,如下所示: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” 不会被强制转换,因为它不是一个有效的十进制整数。
如果出于某种原因你需要一个整数,你可以通过对它执行数学运算将一个字符串转换为一个int-例如。variable * 1(= "32" * 1)或variable + 0(= "32" + 0)。

k2fxgqgv

k2fxgqgv3#

如果你只想得到一个intval,前面的解决方案都不好。format_number将十进制数添加到字符串。这个解决方案可能是最糟糕的。
对我有用的是
添加一个自定义的wig函数过滤器,就像:

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

像这样使用它:

{{ str_to_convert|force_to_int }}
r6vfmomb

r6vfmomb4#

以下是我基于this answer的观点。

{{ 0 + myNumber }} // returns int(3)

相关问题