如何检查Twig中数字数组中是否存在元素?

时间:2017-07-10 07:54:49

标签: arrays json twig

假设我们在Twig中有一个数组(让我们称之为arr),如下所示:

foo: [
{
    title: 'foo',
    id: 1
},
{
    title: 'bar',
    id: 2
}],
bar: [
{
    some: 23,
    required: true
},
{
    some: 12,
    required: false
}]

数组元素的数量和顺序可能不同,所以我不能使用类似arr.foo [0]的东西来获取第一个元素。我怎样才能创建一个条件if 'bar' exists in the foo array OR 'some' equals to 12 in my bar array的枝条?

我试过了:

if 'bar' exists in arr.foo.title or 12 exists in arr.bar.some

(这显然不起作用,因为foo和bar的键是数字键而不是' title'或者' some')。

我也尝试过:

if arr.foo.title['bar'] is defined or arr.bar.some['12'] is defined

(由于同样的原因,它没有定义)

我试过了:

for item in arr.foo if item.title == 'bar' or for item2 in arr.bar if item2.some == 23

(因为两个for循环而无法工作)

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您展示的代码是JSON而不是数组。 PHP和Twig数组都必须具有唯一的命名键。

这是有效数组的Twig代码:

{% set arr = {
    'foo1': {
        'title': 'foo','id': 1
    },
    'foo2': {
         'title': 'bar','id': 2
    },
    'bar1': {
         'some': 23,'required': true
    },
    'bar2':{
         'some': 12,'required': false
    }
} %}

我创建了一个类似于上面的数组。 然后这是一个TwigFiddle,您可以看到如何运行测试:https://twigfiddle.com/8ydz3t

你可以在Twigfiddle中玩游戏,看看你如何使用Twig和数组来找出你需要的东西。

我希望有所帮助!