tbl*_*cog 3 php arrays symfony twig
我有两个想要相交的数组。我得到了这两个数组:
{{ 转储(数组1) }}
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"
}
}
Run Code Online (Sandbox Code Playgroud)
{{ 转储(数组2) }}
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"
}
}
Run Code Online (Sandbox Code Playgroud)
我希望我的第三个数组有这样的结果:
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"
}
}
Run Code Online (Sandbox Code Playgroud)
问题是:如何使用树枝中的简单过滤器将它们相交?
对于任何最终来到这里并拥有合理用例并寻找实际解决方案的人......;)
Twig数组filter过滤器结合起来x 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(', ') }}
Run Code Online (Sandbox Code Playgroud)
柠檬、桃子、橙子
更好的解决方案是在执行输出之前将它们在我的控制器或服务中与 php 相交:
array_intersect($array1, $array2);
Run Code Online (Sandbox Code Playgroud)
Twig 的目的是在模板中显示数据,而不需要像 @sjagr 在他的评论中建议的那样进行太多处理。