我已经从我的数据库加载了一个字符串,并从我的 config.yml
加载了全局变量。我想检查变量是否是下面给出的数组的一部分:
app.user.role ='["1","2","3","4","5","6","7","8","9","10","11"]'
我无法改变这一点。它必须看起来像这样。
我是这样检查的:
{% if VARIABLE in app.user.role %}
全局VARIABLE
是一个整数(我无法更改它)
但是当例如VARIABLE = 1
时,我的语句返回true,因为在app.user.role
中我们可以找到四个1
(在"1","10","11"
),但我想在 "1"
中找到它,而不是在 "10","11"中找到它
.
我想要的是将 app.user.role
转换为数组或找到另一种方法来检查变量是否是我的伪数组的元素。
我试图迭代 for
循环,但 app.user.role
但 app.user.role
不是一个数组(实际上是的,但只有一个值 ["1","2","3","4","5","6","7","8","9","10",“11”]
)。
最佳答案
该字符串看起来像 JSON。您可以创建一个 Twig Extension 类并在那里注册一个仅返回 in_array
的函数:
<?php
class MyExtension extends Twig_Extension
{
public function getFunctions()
{
return [
new Twig_SimpleFunction(
'inarray',
[$this, 'inArray']
),
];
}
/**
* @param int $variable
* @param string $appUserRole
*
* @return bool
*/
public function inArray(int $variable, string $appUserRole): bool
{
return in_array($variable, json_decode($appUserRole));
}
}
然后在模板中:
{% if inarray(VARIABLE, app.user.role) %}
关于arrays - 检查数组 TWIG 中是否存在值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48009052/