问题很短。我得到了一个整数键数组,参数是字符串.我想用这个参数得到数组的元素。如何在树枝intval - (int)"32"的{{ variable }}的variable == (string) "32";?
intval - (int)"32"
{{ variable }}
variable == (string) "32";
jdgnovmf1#
有过滤器在树枝。其中之一是这样的:https://twig.symfony.com/doc/2.x/filters/number_format.html
{{ variable|number_format }}
但是,如果你正在对字符串进行数学运算,它将自动转换为整数!
hc2pp10m2#
你可以使用一个变量作为键来访问数组的值,如下所示:myArray[myKey]。数组键是否为整数并不重要(例如:32)或对应的字符串("32"),或者myKey是整数还是字符串。所有这些组合都应该工作(see TwigFiddle):
myArray[myKey]
32
"32"
myKey
{% 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)。
'2'
2
variable * 1
"32" * 1
variable + 0
"32" + 0
k2fxgqgv3#
如果你只想得到一个intval,前面的解决方案都不好。format_number将十进制数添加到字符串。这个解决方案可能是最糟糕的。对我有用的是添加一个自定义的wig函数过滤器,就像:
format_number
public function getFilters(): array { return [ new TwigFilter('force_to_int', fn ($value) => intval($value)) ]; }
像这样使用它:
{{ str_to_convert|force_to_int }}
r6vfmomb4#
以下是我基于this answer的观点。
{{ 0 + myNumber }} // returns int(3)
4条答案
按热度按时间jdgnovmf1#
有过滤器在树枝。其中之一是这样的:
https://twig.symfony.com/doc/2.x/filters/number_format.html
但是,如果你正在对字符串进行数学运算,它将自动转换为整数!
hc2pp10m2#
你可以使用一个变量作为键来访问数组的值,如下所示:
myArray[myKey]
。数组键是否为整数并不重要(例如:32
)或对应的字符串("32"
),或者myKey
是整数还是字符串。所有这些组合都应该工作(see TwigFiddle):在上面代码的第三行,字符串键
'2'
实际上被转换为整数2
,如PHP's documentation of arrays状态:包含有效十进制整数的字符串,除非数字前面有 + 符号,否则将转换为整数类型。例如,密钥 “8” 实际上将存储在 8 下。另一方面,“08” 不会被强制转换,因为它不是一个有效的十进制整数。
如果出于某种原因你需要一个整数,你可以通过对它执行数学运算将一个字符串转换为一个int-例如。
variable * 1
(="32" * 1
)或variable + 0
(="32" + 0
)。k2fxgqgv3#
如果你只想得到一个intval,前面的解决方案都不好。
format_number
将十进制数添加到字符串。这个解决方案可能是最糟糕的。对我有用的是
添加一个自定义的wig函数过滤器,就像:
像这样使用它:
r6vfmomb4#
以下是我基于this answer的观点。