问题非常严重。
我有一个带整数键的数组,参数是字符串。我想通过使用该参数获取该数组的元素。
如何进入intval - (int)"32"
{{ variable }}
的{{1}}的Twig variable == (string) "32";
?
答案 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 }}