使用Twig将两个数组相交

时间:2014-12-19 16:36:26

标签: php arrays symfony twig

我有两个我希望交叉的阵列。 我有这两个数组:

{{dump(array1)}}

array(6) {
  [0]=>
  array(2) {
    ["id"]=>
    int(121)
    ["text"]=>
    string(3) "uno"
  }
  [1]=>
  array(2) {
    ["id"]=>
    int(122)
    ["text"]=>
    string(3) "dos"
  }
  [2]=>
  array(2) {
    ["id"]=>
    int(123)
    ["text"]=>
    string(4) "tres"
  }
  [3]=>
  array(2) {
    ["id"]=>
    int(124)
    ["text"]=>
    string(6) "cuatro"
  }
  [4]=>
  array(2) {
    ["id"]=>
    int(125)
    ["text"]=>
    string(5) "cinco"
  }
  [5]=>
  array(2) {
    ["id"]=>
    int(126)
    ["text"]=>
    string(4) "seis"
  }
}

{{dump(array2)}}

array(3) {
  [0]=>
  array(2) {
    ["id"]=>
    int(124)
    ["text"]=>
    string(6) "cuatro"
  }
  [1]=>
  array(2) {
    ["id"]=>
    int(125)
    ["text"]=>
    string(5) "cinco"
  }
  [2]=>
  array(2) {
    ["id"]=>
    int(126)
    ["text"]=>
    string(4) "seis"
  }
  [3]=>
  array(2) {
    ["id"]=>
    int(127)
    ["text"]=>
    string(5) "siete"
  }
}

我希望我的第三个数组有这样的结果:

array(3) {
  [0]=>
  array(2) {
    ["id"]=>
    int(124)
    ["text"]=>
    string(6) "cuatro"
  }
  [1]=>
  array(2) {
    ["id"]=>
    int(125)
    ["text"]=>
    string(5) "cinco"
  }
  [2]=>
  array(2) {
    ["id"]=>
    int(126)
    ["text"]=>
    string(4) "seis"
  }
}

问题是:如何使用树枝中的简单过滤器将它们相交?

2 个答案:

答案 0 :(得分:3)

更好的解决方案是在执行输出之前将它们与我的控制器或服务交叉:

array_intersect($array1, $array2);

Twig旨在显示模板中的数据,而不像@sjagr在评论中所做的那样进行太多处理。

答案 1 :(得分:1)

对于任何在这里结束并拥有合理用例并正在寻找实际解决方案的人...;)

将Twig array filter filterx in array_y结合使用,应该可以带您到达目的地(在Twig 1.41和2.10中添加):

{% set arr_a = ['lemon', 'apple', 'peach', 'banana', 'orange', 'pear'] %}
{% set arr_b = ['mango', 'peach', 'orange', 'lemon', 'melon'] %}

{{ arr_a | filter((fruit) => fruit in arr_b) | join(', ') }}
  

柠檬,桃,橙

Twig fiddle here