我从我的数据库加载了一个字符串,并从我的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"
。{/ p>
我想要的是将app.user.role
转换为数组或找到另一种方法来检查变量是否是我的伪数组的元素。
我试图遍历for
循环,但app.user.role
但app.user.role
不是数组(实际上是,但是有一个值["1","2","3","4","5","6","7","8","9","10","11"]
)。
答案 0 :(得分:3)
字符串看起来像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) %}
答案 1 :(得分:0)
找到解决方案。不是最好的,但它有效。
{% set check = '"'~VARIABLE~'"' %}
{% if check in app.user.role %}
现在它正在......